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
- //寫入相應的文件
- 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讀寫文件