Java读写文件
Posted sxytalent
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java读写文件相关的知识,希望对你有一定的参考价值。
Java主要提供了以下几个读写文件操作:
1、InputStream,OutputStream(字节流)
-
InputStream in=new FileInputStream("d:\\abc.txt");
-
OutputStream out=new FileOutputStream("c:\\cba.txt");
注意到,后面实例化是用的FileXXXStream,这是因为java里面不能够用InputStream,OutputStream进行实例化,查手册得知:
InputStream有这些子类:
而OutputStream与之类似,有这些直接子类:
而FileInputStream的构造方法有如下这些:
可以看出,里面的参数要么为一个文件路径,要么为一个File对象。
而FileOutputStream则与之类似,构造方法如下:
虽然参数有所不同,但大体上还是可以总结为:要么为文件路径,要么为File对象。
FileInputStream的读方法主要有3种,如下所示:
而FileOutputStream的常见方法,如下:
2、BufferedInputStream、BufferedOutputStream(缓存字节流)使用方式和字节流差不多,但是效率更高(推荐使用)
-
//读取文件(缓存字节流)
-
BufferedInputStream in = new BufferedInputStream(new FileInputStream("d:\\1.txt"));
-
//写入相应的文件
-
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));
对于BufferedInputStream来说,
其read()方法的用法基本与InputStream的read()一致,只是效率更高
对于BufferedOutputStream来说,
牵涉到缓冲区的,注意最后要flush,close,不然最后一点数据就会留在缓冲区中,不会写入到想要的文件中。
3、InputStreamReader、OutputStreamWriter(字节流转字符流,这种方式不建议使用,不能直接字节长度读写)。使用范围用做字符转换
-
//读取文件(字节流)
-
InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
-
//写入相应的文件
-
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));
对于InputStreamReader来说,
InputStreamReader是从字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字符 。
而对于OutputStreamWriter来说,
OutputStreamWriter是字符的桥梁流以字节流:向其写入的字符编码成使用指定的字节charset 。
4、BufferedReader、BufferedWriter(缓存字符流,提供readLine方法读取一行文本)
-
//读取文件(字符流)
-
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK"));//这里主要是涉及中文
-
-
//写入相应的文件
-
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\2.txt"),"GBK"));
对于BufferedReader来说,
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
对于BufferedWriter来说,
将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。
5、Reader、PrintWriter(PrintWriter这个很好用,在写数据的同时可以格式化)
-
//读取文件
-
Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
-
//写入相应的文件
-
PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));
对于Reader来说,
对于writer来说,
总结:InputStream,OutputStream之类的都是字节流,而Reader,Writer之类的都是字符流,而两者都有的,则是他们的桥梁角色,负责转换,平时单独用得少。
以上是关于Java读写文件的主要内容,如果未能解决你的问题,请参考以下文章