一、文件流概述
在Java中,文件是指包含數據的持久性存儲。當我們想要讀取或寫入文件時,就需要使用文件流。文件流是一種用於讀寫文件數據的IO流,是位元組流和字元流的衍生。
文件輸入流用於從文件讀取數據,文件輸出流用於將數據寫入文件。Java提供了FileInputStream和FileOutputStream類作為文件流的實現,它們的用法和位元組流、字元流的操作方式非常相似。
//讀取文件數據 FileInputStream fis = new FileInputStream("test.doc"); byte[] bytes = fis.readAllBytes(); String data = new String(bytes); //寫入文件數據 FileOutputStream fos = new FileOutputStream("output.doc"); String data = "這是要寫入文件的數據"; byte[] bytes = data.getBytes(); fos.write(bytes);
二、位元組流讀取文件
位元組流(InputStream和OutputStream)是按照位元組(二進位數據)方式進行讀寫操作的IO流。使用位元組流讀取文件時,會讀取每個位元組並將它們轉換成Java的原始類型。
其中,FileInputStream類是位元組流輸入類,它繼承自InputStream類。FileInputStream實現了一個文件輸入流,可以從文件系統中的文件讀取位元組。
下面是一個使用位元組流讀取文件的示例:
FileInputStream fis = new FileInputStream("test.txt"); int data; while((data = fis.read()) != -1) { System.out.print((char) data); } fis.close();
在該示例中,我們首先創建一個FileInputStream對象來讀取test.txt文件。然後使用while循環來不斷讀取文件中的數據,並將每個位元組轉換成char類型輸出。最後使用fis.close()關閉輸入流。
三、字元流讀取文件
字元流是按照字元(Unicode字符集)方式進行讀寫操作的IO流。使用字元流讀取文件時,會將位元組數據轉換成字元數據。
其中,FileReader是字元流讀取類,它繼承自InputStreamReader類。FileReader可以從文件中讀取字元流數據。
下面是一個使用字元流讀取文件的示例:
FileReader fr = new FileReader("test.txt"); int data; while((data = fr.read()) != -1) { System.out.print((char) data); } fr.close();
在該示例中,我們首先創建一個FileReader對象來讀取test.txt文件。然後使用while循環來不斷讀取文件中的數據,並將每個字元輸出。最後使用fr.close()關閉輸入流。
四、BufferedReader讀取文件
BufferedReader是Java中經常使用的高效字元緩衝流,使用它讀取文件可以減少系統的IO操作次數,提高程序的執行效率。
在Java中,我們通常使用BufferedReader.readLine()方法讀取文件中的一行數據。
下面是一個使用BufferedReader讀取文件的示例:
FileReader fr = new FileReader("test.txt"); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); fr.close();
在該示例中,我們首先創建一個FileReader對象,然後使用BufferedReader作為輸入流,使用readLine()方法讀取文件中的一行數據並輸出,直到文件結束。最後使用br.close()和fr.close()關閉輸入流。
五、FileInputStream和BufferedInputStream讀取文件
FileInputStream是Java中常用的位元組流,而BufferedInputStream是常用的高效緩衝位元組流。
使用BufferedInputStream讀取文件時,可以提高程序的執行效率,避免過多的IO操作。
下面是一個使用FileInputStream和BufferedInputStream讀取文件的示例:
FileInputStream fis = new FileInputStream("test.txt"); BufferedInputStream bis = new BufferedInputStream(fis); int data; while ((data = bis.read()) != -1) { System.out.print((char) data); } bis.close(); fis.close();
在該示例中,我們首先創建一個FileInputStream對象,然後使用BufferedInputStream作為輸入流,使用read()方法讀取文件中的位元組數據,並將每個位元組轉換成char類型輸出,直到文件結束。最後使用bis.close()和fis.close()關閉輸入流。
六、小結
本文介紹了Java中文件流的基本概念,以及使用FileInputStream、FileReader、BufferedReader、BufferedInputStream等類來實現對文件的讀取。
在實際開發中,我們可以根據需求來選擇合適的流來讀取文件。如果需要讀取二進位文件,則使用位元組流會更加合適;如果需要讀取文本文件,則使用字元流和緩衝流會提高程序性能。
原創文章,作者:HHOE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139210.html