处理流
缓冲流
1)缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。
2)J2SDK提供了四种缓冲流,其常用构造方法为:
BufferedReader(Reader in)
BufferedReader(Reader in ,int sz) //sz 为自定义缓冲区大小
BufferedWriter(Writer out)
BufferedWriter(Writer out,int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in ,int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out,int size)
a)缓冲输入流支持其父类的mark和reset方法
b)BufferedReader提供了ReadLine方法用于读取一行字符串
c)BufferedWriter提供了newLine用于写入一个行分隔符
d)对于输出的缓冲流,写出的数据会现在内存中缓存,使用flush方法将会使内存中的数据立刻写出。
例子1:
import java.io.*;
public class TestBufferStream {
public static void main(String[] args){
try{
FileInputStream fs = new FileInputStream("F:\\eclipse workspace\\Test\\src\\Test01.java");
BufferedInputStream bis = new BufferedInputStream(fs);
int c = 0;
System.out.println((char)bis.read());
System.out.println((char)bis.read());
bis.mark(100);
for(int i = 0;i<=10 &&(c=bis.read()) != -1;i++){
System.out.print((char)c+" ");
}
System.out.println();
bis.reset();
for(int i = 0;i<=10 &&(c=bis.read()) != -1;i++){
System.out.print((char)c+" ");
}
bis.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
输出结果:
i
m
p o r t j a v a . i
p o r t j a v a . i
例子2:
import java.io.*;
public class TestBufferedStream2 {
public static void main(String[] args){
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\ccc.txt"));
BufferedReader br = new BufferedReader(new FileReader("F:\\ccc.txt"));
String s = null;
for(int i = 1;i<=100;i++){
s = String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
bw.flush();
while((s = br.readLine()) != null){
System.out.println(s);
}
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
说明:
文件ccc.txt的内容被读到程序总给“String s”分配的内存中了
(while((s = br.readLine()) != null))