Java讀取文件流

一、文件流概述

在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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HHOE的頭像HHOE
上一篇 2024-10-04 00:22
下一篇 2024-10-04 00:22

相關推薦

發表回復

登錄後才能評論