好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java 超详细讲解IO操作字节流与字符流

IO操作

字节流

java.io.InputStream 输入流,主要是用来读取文件内容的。 java.io.OutputStream 输出流,主要是用来将内容字节写入文件的。

FileInputStream

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。

有多种构造方法可用来创建对象。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件

 InputStream   f   =     new     FileInputStream  (  "D:/hello"  ); 

也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:

 File   f   =     new     File  (  "D:/hello"  );  
  InputStream     in     =     new     FileInputStream  (  f  ); 

FileOutputStream

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

使用字符串类型的文件名来创建一个输出流对象:

 OutputStream   f   =     new     FileOutputStream  (  "D:/hello"  ); 

也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

 File   f   =     new     File  (  "D:/hello"  );  
  OutputStream   fOut   =     new     FileOutputStream  (  f  ); 

字节流读写案例

读取D:/hello.txt文件中的内容再输入到文件D:/test.txt中

         public     class     Mk     {  
          public     static     void   main  (  String  []   args  )     throws     IOException     {  
              File   file  =  new     File  (  "D://hello.txt"  );  
              File   file1  =     new     File  (  "D://test.txt"  );  
              InputStream     is  =  new     FileInputStream  (  file  );  
              OutputStream     out  =  new     FileOutputStream  (  file1  );  
              //定义byte数组用来暂存数据  
              byte  []   buf   =     new     byte  [  1024  ];  
              //读取Is中的内容存到buf  
              is  .  read  (  buf  );  
              //将buf中的内容写入out  
              out  .  write  (  buf  );  
              is  .  close  ();  
              out  .  close  ();  
          }  
          } 

字符流

FileReader

写入文件实例

 public     class   A   {  
      public     static     void   main  (  String  []   args  )     throws     IOException     {  
          FileWriter   fw   =     new     FileWriter  (  "user.txt"  ,     true  );  
        fw  .  write  (  "你好中国1"  );  
        fw  .  write  (  "你好中国2"  );  
        fw  .  write  (  "你好中国3"  );  
        fw  .  close  ();  
      }  
  } 

FileWriter

读取文件实例

这里我把内容换行了

br.ready()是判断这一行流是否为空

br.readLine()是输出一行,然后自动光标指到下一行。

 public     class   A   {  
      public     static     void   main  (  String  []   args  )     throws     IOException     {  
          BufferedReader   br   =     new     BufferedReader  (  new     FileReader  (  "user.txt"  ));  
          while     (  br  .  ready  ())     {  
              System  .  out  .  println  (  br  .  readLine  ());  
          }  
        br  .  close  ();  
      }  
  } 

字节流与字符流的区别

字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?

字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

那开发中究竟用字节流好还是用字符流好呢?

在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。 如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。

到此这篇关于Java 超详细讲解IO操作字节流与字符流的文章就介绍到这了,更多相关Java IO操作内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://jianshen.blog.csdn.net/article/details/123617806

查看更多关于Java 超详细讲解IO操作字节流与字符流的详细内容...

  阅读:12次