Java读写文件

Posted sxytalent

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java读写文件相关的知识,希望对你有一定的参考价值。

Java主要提供了以下几个读写文件操作:

1、InputStream,OutputStream(字节流)

  1. InputStream in=new FileInputStream("d:\\abc.txt");  
  2. OutputStream out=new FileOutputStream("c:\\cba.txt");  

注意到,后面实例化是用的FileXXXStream,这是因为java里面不能够用InputStream,OutputStream进行实例化,查手册得知:

InputStream有这些子类:

技术分享图片

而OutputStream与之类似,有这些直接子类:

技术分享图片

而FileInputStream的构造方法有如下这些:

技术分享图片

可以看出,里面的参数要么为一个文件路径,要么为一个File对象。

而FileOutputStream则与之类似,构造方法如下:

技术分享图片

虽然参数有所不同,但大体上还是可以总结为:要么为文件路径,要么为File对象。

FileInputStream的读方法主要有3种,如下所示:

技术分享图片

技术分享图片

技术分享图片

而FileOutputStream的常见方法,如下:

技术分享图片

技术分享图片

技术分享图片

2、BufferedInputStream、BufferedOutputStream(缓存字节流)使用方式和字节流差不多,但是效率更高(推荐使用)

  1. //读取文件(缓存字节流)  
  2.  BufferedInputStream in = new BufferedInputStream(new FileInputStream("d:\\1.txt"));  
  3.  //写入相应的文件  
  4.  BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));  

对于BufferedInputStream来说,

技术分享图片

技术分享图片

其read()方法的用法基本与InputStream的read()一致,只是效率更高

对于BufferedOutputStream来说,

技术分享图片

技术分享图片

技术分享图片

技术分享图片

牵涉到缓冲区的,注意最后要flush,close,不然最后一点数据就会留在缓冲区中,不会写入到想要的文件中。

3、InputStreamReader、OutputStreamWriter(字节流转字符流,这种方式不建议使用,不能直接字节长度读写)。使用范围用做字符转换

  1.  //读取文件(字节流)  
  2.   InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");  
  3. //写入相应的文件  
  4.    OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));  

对于InputStreamReader来说,

技术分享图片

InputStreamReader是从字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字符 。

技术分享图片

技术分享图片

技术分享图片

而对于OutputStreamWriter来说,

OutputStreamWriter是字符的桥梁流以字节流:向其写入的字符编码成使用指定的字节charset 。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

4、BufferedReader、BufferedWriter(缓存字符流,提供readLine方法读取一行文本)

  1. //读取文件(字符流)  
  2.       BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK"));//这里主要是涉及中文  
  3.          
  4.       //写入相应的文件  
  5.       BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\2.txt"),"GBK"));  

对于BufferedReader来说,

字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

对于BufferedWriter来说,

技术分享图片

将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

5、Reader、PrintWriter(PrintWriter这个很好用,在写数据的同时可以格式化)

  1. //读取文件  
  2.    Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");  
  3.    //写入相应的文件  
  4.    PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));  

对于Reader来说,

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

对于writer来说,

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

总结:InputStream,OutputStream之类的都是字节流,而Reader,Writer之类的都是字符流,而两者都有的,则是他们的桥梁角色,负责转换,平时单独用得少。

 

以上是关于Java读写文件的主要内容,如果未能解决你的问题,请参考以下文章

java中对文件进行读写操作的基本类是啥?

Java读写dbf文件

java远程读写文件详解

如何使用Java API读写HDFS

如何使用Java API读写HDFS

java中字节级数据文件的读写编程