内存操作流

版权声明:嘻嘻嘻嘻,I see you https://blog.csdn.net/qq_38317309/article/details/86310501

outputStream,InputStream这个文件一定会被创建,需要发生IO处理,但是又不希望产生文件,可以使用内存作为操作的终端,内存操作流比较麻烦,也包含内存字节流、内存字符流。字节内存流:ByteArrayInputStream ByteArrayOutputStream字符内存流:CharArrayReaderCharArrayWriter有一个小小的问题,以文件读为例,每次读满数组,之后考虑别的。通过内存流,实现一个大小写做转换大操作。


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;public class CopyTest {
 public static void main(String[] args) throws Exception {
  String msg = "hello World";
  // 实例化InputStream类对象,实例化的时候需要将你操作的数据保存到内存之中,最终你读取的就是你设置的内容。
  InputStream input = new ByteArrayInputStream(msg.getBytes());
  OutputStream output = new ByteArrayOutputStream();
  int temp = 0;
  while ((temp = input.read()) != -1) {
   output.write(Character.toUpperCase(temp));
  }
  System.out.println(output);
  input.close();
  output.close();
 }
}

文件合并,两个文件的OUtputStream数据都可以保存在程序内,利用这一特征将文件合并。如果要读取文件,最好是读取File 对象。如果只传文件名称。名称就要在签名声明上文件的目录利用内存流读数据 开辟一个内存流不产生内存文件,有IO,但是没有文件,让这个数据一次性全部读取出来。ByteArrayOutputStream类中有一个“头ByteArray方法,public byte[] toByteArray()表示将所有读取到了byteArray中的数据,都用字节数组输出出来。

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;public class CopyTest{
 public static void main(String[] args) throws Exception {
  File file[] =new File[] {
    new File("d:"+File.separator+"dataa.txt"),
    new File("d:"+File.separator+"datab.txt")
  };
  System.out.println(readFile(file[0])+readFile(file[1]));
  String data[]=new String[2];
  for (int i = 0; i < file.length; i++) {
   data[i]=readFile(file[i]);
  }
  StringBuffer buf=new StringBuffer();
  String contentA[]= data[0].split(" ");
  String contentB[]= data[1].split(" ");
  for(int i=0;i<contentA.length;i++) {
   buf.append(contentA[i]).append("(").append(contentB[i]).append(")").append(" ");
  }
  System.out.println(buf);
 }
 public static String readFile(File file) throws Exception{
  if(file.exists()) {
   InputStream input=new FileInputStream(file);//toByteArray 是子类扩充的方法。
   ByteArrayOutputStream bos=new ByteArrayOutputStream();
   byte data[]=new byte[10];
   int temp=0;
   while((temp = input.read(data))!=-1) {//内容都在内存流中
    bos.write(data,0,temp);
   }
   bos.close();
   input.close();
   return new String(bos.toByteArray());//将读取的内容返回
  }
  return null;
  
 }
}

内存流最大的好处,如果只是使用INputStream类,在进行数据读取的时
候,会存在缺陷,而结合内存流的操作就会好很多,但是目前而言使用很少。

猜你喜欢

转载自blog.csdn.net/qq_38317309/article/details/86310501