本帖最后由 开弓没有回头箭 于 2015-5-31 10:48 编辑
在同一个类中,同时创建了多个字节输入流缓冲区对象与多个字节输入流缓冲对象,它们的缓冲区是共享的,用的都是一个缓冲区,用下面程序得到证明:
一个输入缓冲区对象对多个输出缓冲区对象:- import java.io.*;
- class test1
- {
- public static void main(String[] args)throws IOException
- {
- copy();
- }
- public static void copy()throws IOException
- {
- BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("in.txt"));//建立一个字节流输入缓冲区
- BufferedOutputStream bufos1 = new BufferedOutputStream(new FileOutputStream("ou1.txt"));//建立一个字节流输出缓冲区
- BufferedOutputStream bufos2 = new BufferedOutputStream(new FileOutputStream("out2.txt"));//建立第二个字节输出流缓冲区对象
- int by=0;
- int count=0;
- while((by=bufis.read())!=-1)//对于同一个输入流缓冲区对象,分别用两个输出流输入
- {
- if(count%2==0)
- {
- bufos1.write(by);//输出缓冲区对象一输出一次
- count++;
- }
- else
- {
- bufos2.write(by);//输出缓冲区对象二输出一次
- count++;
- }
- }
- bufos2.close();
- bufos1.close();
- bufis.close();
- }
- }
复制代码
在上面程序中in.txt的类容为:123456789
所得结果,out1.txt的类容为:13579
out2.txt的类容为:2468
多个输入对一个输出缓冲区:
- import java.io.*;
- class test1
- {
- public static void main(String[] args)throws IOException
- {
- copy();
- }
- public static void copy()throws IOException
- {
- BufferedInputStream bufis1 = new BufferedInputStream(new FileInputStream("in1.txt"));//建立一个字节流输入缓冲区
- BufferedInputStream bufis2 = new BufferedInputStream(new FileInputStream("in2.txt"));//建立第二个字节流输入缓冲区
- BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("out.txt"));//建立一个字节输出流缓冲区对象
- int by=0;
- int count=0;
- boolean []fileEnd={false,false};
- while(true)//对于两个输入流缓冲区对象用同一个输出流
- {
- if(count%2==0&&fileEnd[0]==false)
- {
- if((by=bufis1.read())==-1)
- {
- fileEnd[0]=true;
- }
- count++;
- }
- else if(fileEnd[1]==false)
- {
- if((by=bufis2.read())==-1)
- {
- fileEnd[1]=true;
- }
- count++;
- }
- if(fileEnd[0]==true&&fileEnd[1]==true)
- {
- break;
- }
- if(by!=-1)
- {
- bufos.write(by);
- }
- }
- bufos.close();
- bufis2.close();
- bufis1.close();
- }
- }
复制代码
在上面程序中in1.txt的类容为:13579
所得结果,in2.txt的类容为:2468
out2.txt的类容为:123456789
由此可见在输入输出流缓冲区对象是共享同一个缓冲区,该缓冲区应该就是单例模式 |
|