一、什麼是文件流?
文件是指產生的數據保存在硬碟上的容器,文件流就是以流的方式讀寫文件中的數據。Java提供了幾個用於訪問文件的流類,包括FileInputStream、FileOutputStream、FileReader和FileWriter。其中FileInputStream和FileOutputStream主要是用來讀寫二進位文件,而FileReader和FileWriter主要是用來讀寫文本文件。
二、使用FileInputStream讀取文件的內容
FileInputStream類是用來讀取文件內容的,它繼承自InputStream類,所以它可以使用InputStream類中的方法來讀取數據。FileInputStream的構造方法如下:
public FileInputStream(String name) throws FileNotFoundException
public FileInputStream(File file) throws FileNotFoundException
在實例化FileInputStream對象時,必須傳遞文件名或文件對象作為參數。FileInputStream的read()方法每次讀取一個位元組,如果返回-1表示讀取到文件末尾。使用FileInputStream讀取文件的示例代碼如下:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("test.txt");
int data;
while ((data = fis.read()) != -1) {
System.out.print((char)data);
}
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼使用FileInputStream讀取test.txt文件中的內容,並列印到控制台上。
三、使用BufferedInputStream提高文件讀取的效率
如果需要讀取大文件中的數據,使用FileInputStream每次只讀取一個位元組的方式效率會很低,因此可以使用緩衝區提高讀取效率。Java提供了BufferedInputStream類,它可以將底層的輸入流包裝成一個帶緩衝區的輸入流,從而提高讀取數據的效率。
BufferedInputStream有兩個構造方法,分別是:
public BufferedInputStream(InputStream in)
public BufferedInputStream(InputStream in, int size)
第一個構造方法會使用默認的緩衝區大小,而第二個構造方法可以指定緩衝區的大小。
使用BufferedInputStream讀取文件的示例代碼如下:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class BufferedInputStreamDemo {
public static void main(String[] args) {
try {
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();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼先使用FileInputStream讀取test.txt文件,並將其包裝為BufferedInputStream,然後使用BufferedInputStream讀取文件中的內容並列印到控制台上。
四、使用FileReader讀取文本文件內容
FileReader類是用來讀取文本文件內容的,它繼承自InputStreamReader類,可以使用InputStreamReader類中的方法來讀取數據。
FileReader的構造方法如下:
public FileReader(String fileName) throws FileNotFoundException
public FileReader(File file) throws FileNotFoundException
使用FileReader讀取文本文件的示例代碼如下:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("test.txt");
int data;
while ((data = fr.read()) != -1) {
System.out.print((char) data);
}
fr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼使用FileReader讀取test.txt文件中的內容,並列印到控制台上。
五、使用BufferedReader提高文本文件讀取的效率
如果需要讀取大文本文件中的數據,使用FileReader每次只讀取一個字元的方式效率會很低,因此可以使用緩衝區提高讀取效率。Java提供了BufferedReader類,它可以將底層的Reader對象包裝成一個帶緩衝區的Reader,從而提高讀取數據的效率。
BufferedReader有兩個構造方法,分別是:
public BufferedReader(Reader in)
public BufferedReader(Reader in, int size)
第一個構造方法會使用默認的緩衝區大小,而第二個構造方法可以指定緩衝區的大小。
使用BufferedReader讀取文本文件的示例代碼如下:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderDemo {
public static void main(String[] args) {
try {
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();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼先使用FileReader讀取test.txt文件,並將其包裝為BufferedReader,然後使用BufferedReader按行讀取文件中的內容並列印到控制台上。
六、小結
本文介紹了Java文件流讀取的基本用法,包括使用FileInputStream、BufferedInputStream、FileReader和BufferedReader來讀取文件中的數據。其中,使用緩衝區可以提高讀取文件的效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237852.html