内存操作流/打印流/合并流

(1)内存操作流:适用于临时存储文件.
  内存操作输入流:byteArrayInputStream
  ByteArrayInputStream(byte[] buf) 
 
  内存操作输出流: byteArrayOutputStream
  构造方法:ByteArrayOutputStream() 

 内存操作流:一个程序结束后,那么这些程序的变量,就会从内存消失(马上消失的这些数据进行读取写入)

示例程序:
//创建内存操作输出流对象
ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
for(int x = 0 ; x <10 ; x ++) {
baos.write(("hello"+x).getBytes());
// baos.close(); 该流不需要关闭
}

//从内存中将内从中的数据显到控制台上
byte[] bys = baos.toByteArray() ;//public byte[] toByteArray():构造一个字符串
//创建内存操作输入流对象
ByteArrayInputStream bais = new ByteArrayInputStream(bys) ;

//一次读取一个字节
int by = 0 ;
while((by=bais.read())!=-1) {
System.out.print((char)by);
}

(2)打印流

字符打印流(针对文本进行操作:PrintWriter)

  字节打印流(printStream 和标准输出流有关系 System.out;)  

 PrintWriter:属于输出流
  1)只能写数据(只能针对目的地文件进行操作),不能读数据(不能针对源文件进行操作)
  2)可以针对文件直接进行操作
  如果一个类中的构造方法里面有File对象或者String类型数据,这个类可以对文本文件直接操作
  FileInputStream
  FileOutputStream
  FileWriter
  FileReader..
  PrintWriter
  3)自动刷新功能::PrintWriter(OutputStream out/Writer out,boolean autoflush);第二个参数如果是true 表示启动自动刷新功能

  4)打印的方法:print(XXX x)/println(XXX  xx)

(3):合并流

SequenceInputStream 表示其他输入流的逻辑串联(合并流)

 
构造方法 public SequenceInputStream(InputStream s1, InputStream s2)
  复制文件
  a.txt----->b.txt
  c.txt----->d.txt 
  现在的需求:
   a.txt+b.txt--->c.txt

 StringDemo.java+SystemInDemo.java---->Copy.java

示例程序://封装源文件
InputStream in1 = new FileInputStream("StringDemo.java") ;
InputStream in2 = new FileInputStream("SystemInDemo.java") ;

//创建合并流对象
SequenceInputStream sis = new SequenceInputStream(in1, in2) ;

//创建一个字节缓冲输入流对象

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("Copy.java"));

        //原来怎么读写,现在依然这样读写
byte[] bys = new byte[1024] ;
int len = 0 ;
while((len=sis.read(bys))!=-1) {
bos.write(bys, 0, len);
bos.flush(); //读图片文件的时候
}

//关闭资源
sis.close();
bos.close();

}

猜你喜欢

转载自blog.csdn.net/qq_41141896/article/details/80412849