一、缓冲流
在读写数据时,让数据在缓冲区能减少系统实际对原始数据来源的存取次数,因为一次能做多个数据单位的操作。相较而言,对于直接从文件读取数据或将数据写入文件,比起缓冲区的读写要慢多了。所以使用缓冲区的流,一般都会比没有缓冲区的流效率更高。拥有缓冲区的流被称为缓冲流,包括BufferedInputStream、BufferedOutputStream类和BufferedReader、BufferedWrite类。缓冲流把数据从原始流成块读入或把数据积累到一个大数据块后再成批写出,通过减少通过资源的读写次 数来加快程序的执行。
BufferedReade类
BufferedReader是Reader的子类,可以Reader的方法。从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。下面是BufferedReader的够构造器和特有的方法
BufferedWriterr类
BufferedWriter类是Writer的子类。
示例代码:
/**
* 缓冲流
* BufferedReader BufferedWriter
* @Author sxj
*
*/
publicclass BufferedDemo {
publicstaticvoid main(String[] args) throws IOException {
//BufferedReader
Reader in=new FileReader("E:/Java课件/HelloWorld.java");
BufferedReader reader=new BufferedReader(in);
String str="";
//使用readLine() 比较方便的读取一行
while (null != (str = reader.readLine())) {
System.out.println(str);
}
reader.close();//关闭流
//BufferedWriter
Writer out=new FileWriter("E:/Java课件/BufferedWriter.txt");
BufferedWriter writer=new BufferedWriter(out);
writer.write("BufferedWriter Line 1");
writer.newLine();//写入一个行分隔符。
writer.write("BufferedWriter Line 2");
writer.newLine();//写入一个行分隔符。
writer.write("BufferedWriter Line 3");
writer.flush();
writer.close();//关闭流
}
}
示例代码执行结果:
二、访问字符串
StringReader:用来将字符串转换成字符输入流。然后使用字符输入流提供的方式进行操作,也可以提供给其他高级字符输入流来使用。如可以将该字符输入流提供给BufferedReader输入流使用
StringWriter:在内存中缓存读取到的所有字符串,然后使用通过toString方法一次性全部输出字符串。
示例代码:
/**
* 访问字符串 StringReader StringWriter
*
* @author sxj
*
*/
publicclass StringReaderWriterDemo {
publicstaticvoid main(String[] args) throws IOException {
//==StringReader
//模拟从某个地方获取到的大量字符串数据
String str = "StringReader:用来将字符串转换成字符输入流。" +
"然后使用字符输入流提供的方式进行操作,也可以提供给" +
"其他高级字符输入流来使用。如可以将该字符输入流提供给" +
"BufferedReader输入流使用。\r\nStringWriter:" +
"在内存中缓存读取到的所有字符串,然后使用通" +
"过toString方法一次性全部输出字符串。";
//把字符串转为输入流
StringReader in=new StringReader(str);
//通过BufferedReader访问字符串
BufferedReader reader=new BufferedReader(in);
String strT="";
while ((strT=reader.readLine())!=null) {
System.out.println(strT);
}
reader.close();//关闭流
System.out.println("----------------------");
//==StringWriter
//创建StringWriter实例
StringWriter writer=new StringWriter();
//通过Reader读取文件内容
Reader reader1 = new FileReader("E:/Java课件/HelloWorld.java");
char[] cs=newchar[50];
int count=0;
while ((count=reader1.read(cs, 0, cs.length))!=-1) {
//把读取的内容写入到StringWriter对象
writer.write(cs, 0, count);
}
reader1.close();//关闭输入流
//一次性将字符串取出
String strConten=writer.toString();
writer.close();//关闭StringWriter
System.out.println(strConten);
}
}
示例代码执行结果:
在读写数据时,让数据在缓冲区能减少系统实际对原始数据来源的存取次数,因为一次能做多个数据单位的操作。相较而言,对于直接从文件读取数据或将数据写入文件,比起缓冲区的读写要慢多了。所以使用缓冲区的流,一般都会比没有缓冲区的流效率更高。拥有缓冲区的流被称为缓冲流,包括BufferedInputStream、BufferedOutputStream类和BufferedReader、BufferedWrite类。缓冲流把数据从原始流成块读入或把数据积累到一个大数据块后再成批写出,通过减少通过资源的读写次 数来加快程序的执行。
BufferedReade类
BufferedReader是Reader的子类,可以Reader的方法。从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。下面是BufferedReader的够构造器和特有的方法
BufferedWriterr类
BufferedWriter类是Writer的子类。
示例代码:
/**
* 缓冲流
* BufferedReader BufferedWriter
* @Author sxj
*
*/
publicclass BufferedDemo {
publicstaticvoid main(String[] args) throws IOException {
//BufferedReader
Reader in=new FileReader("E:/Java课件/HelloWorld.java");
BufferedReader reader=new BufferedReader(in);
String str="";
//使用readLine() 比较方便的读取一行
while (null != (str = reader.readLine())) {
System.out.println(str);
}
reader.close();//关闭流
//BufferedWriter
Writer out=new FileWriter("E:/Java课件/BufferedWriter.txt");
BufferedWriter writer=new BufferedWriter(out);
writer.write("BufferedWriter Line 1");
writer.newLine();//写入一个行分隔符。
writer.write("BufferedWriter Line 2");
writer.newLine();//写入一个行分隔符。
writer.write("BufferedWriter Line 3");
writer.flush();
writer.close();//关闭流
}
}
示例代码执行结果:
二、访问字符串
StringReader:用来将字符串转换成字符输入流。然后使用字符输入流提供的方式进行操作,也可以提供给其他高级字符输入流来使用。如可以将该字符输入流提供给BufferedReader输入流使用
StringWriter:在内存中缓存读取到的所有字符串,然后使用通过toString方法一次性全部输出字符串。
示例代码:
/**
* 访问字符串 StringReader StringWriter
*
* @author sxj
*
*/
publicclass StringReaderWriterDemo {
publicstaticvoid main(String[] args) throws IOException {
//==StringReader
//模拟从某个地方获取到的大量字符串数据
String str = "StringReader:用来将字符串转换成字符输入流。" +
"然后使用字符输入流提供的方式进行操作,也可以提供给" +
"其他高级字符输入流来使用。如可以将该字符输入流提供给" +
"BufferedReader输入流使用。\r\nStringWriter:" +
"在内存中缓存读取到的所有字符串,然后使用通" +
"过toString方法一次性全部输出字符串。";
//把字符串转为输入流
StringReader in=new StringReader(str);
//通过BufferedReader访问字符串
BufferedReader reader=new BufferedReader(in);
String strT="";
while ((strT=reader.readLine())!=null) {
System.out.println(strT);
}
reader.close();//关闭流
System.out.println("----------------------");
//==StringWriter
//创建StringWriter实例
StringWriter writer=new StringWriter();
//通过Reader读取文件内容
Reader reader1 = new FileReader("E:/Java课件/HelloWorld.java");
char[] cs=newchar[50];
int count=0;
while ((count=reader1.read(cs, 0, cs.length))!=-1) {
//把读取的内容写入到StringWriter对象
writer.write(cs, 0, count);
}
reader1.close();//关闭输入流
//一次性将字符串取出
String strConten=writer.toString();
writer.close();//关闭StringWriter
System.out.println(strConten);
}
}
示例代码执行结果: