javaIO知识梳理

test.txt:

orjavaIo
java

 

1,输入流read()读取一个字节。只能输出该文本文档得第一个字节。

public static void main(String[] args) throws IOException {

  InputStream in=new FileInputStream("test.txt");

  int a=in.read();

  System.out.println((char)a);;

 }
输出:o 

 

2,单个字节循环读取,效率很低。输出全部文档内容。

public static void main(String[] args) throws IOException {

  InputStream in=new FileInputStream("test.txt");

  int a=in.read();

  while(a!=-1){

   System.out.print((char)a);

   a=in.read();

  }

   in.close(); 
//记得关闭流资源 
 }
输出: orjavaIo

      java

3,通过字符数组读取,一次读一组字符。因为它一次读一个数组,读最后一个得时候数字并没有清空,只是替换了前面部分数据。

 public static void main(String[] args) throws IOException {
  InputStream in=new FileInputStream("test.txt");
  byte[] b=new byte[10];
  int len=0;
  while((len=in.read(b))!=-1){
   for(byte buffer:b){
    System.out.print((char)buffer);
   }
  }
  in.close();
 }
}
//输出orjavaIo

      javavaIo

4,为了解决问题三,我们可以按照字节数组长度读取。

InputStream in=new FileInputStream("test.txt");

  byte[] b=new byte[10];

  int len=0;

  while((len=in.read(b))!=-1){

   for(int i=0;i<len;i++){

    System.out.print((char)b[i]);

   }

  }

  in.close();
//输出orjavaIo

     java

 4,我们都是从开始位置开始读取文件,其实我们可以输入流读取得自己指定位置,我们指定她的其实位置。

byte[] b=new byte[100];

  in.read(b, 10, in.available());

  for(byte buffer:b){

   System.out.print((char)buffer);

  }
  in.close();
输出:10空格+文档+剩余空格 
这表明字节数组只是填充了位置10以后得部分数据。

5,以上都是字节输入流,下面我们看看字符输入流

     在上面我们输出比byte数组元素得时候每次都必须得将其转化为char类型。比较麻烦,所以尝试字符输入流。

 public static void main(String[] args) throws IOException {

  Reader in= new FileReader("test.txt");

  char[] b=new char[20];

  int len=0;

  while((len=in.read(b))!=-1){

   for(int i=0;i<len;i++){

    System.out.print(b[i]);

   }

  }

6,缓冲流有更高得效率。bufferreader   用缓冲流来复制文件。

Reader in=new FileReader("test.txt");

  BufferedReader reader=new BufferedReader(in);

  Writer out=new FileWriter("newText.txt");

  BufferedWriter writer=new BufferedWriter(out);

  

  String str=null;

  while((str=reader.readLine())!=null){

   writer.write(str);

   writer.write("\n");

  }

  reader.close();

  writer.close();

  out.close();

  in.close();

 }

 

你可能感兴趣的:(java,IO)