Java - 讀取檔案:初學者指南

你好,未來的Java開發者!今天,我們將進入Java中檔案處理的精彩世界。具體來說,我們將專注於如何讀取檔案。如果你以前從未寫過一行代碼,也別擔心 - 我會在這裡陪伴你,一步一步解釋一切。那麼,讓我們開始吧!

Java - Read Files

Java檔案處理介紹

在我們開始讀取檔案之前,讓我們了解為什麼這很重要。想像你是一名廚師(請耐心聽我解釋!)。你需要食譜來烹飪,對嗎?好吧,在編程中,檔案就像我們的食譜。它們包含了我們的程序需要處理的信息。學習如何閱讀這些“食譜”對任何Java開發者來說都是至關重要的。

為什麼我們需要讀取檔案?

  1. 數據存儲:檔案持久地存儲數據。
  2. 配置:許多程序使用配置檔案。
  3. 數據交換:檔案通常用於在不同程序之間共享數據。

現在我們知道了為什麼,讓我們來學習如何做到這一點!

在Java中讀取檔案

Java提供了多種讀取檔案的方法。我們將涵蓋三種主要方法:

  1. 使用FileInputStream
  2. 使用FileReader
  3. 使用Files.readAllLines()

我們一起來看看每一個,好嗎?

1. 使用FileInputStream()構造函數讀取檔案

FileInputStream非常適合從檔案中讀取原始字節。它就像用吸管從你的檔案奶昔中吸取數據一樣!

以下是個例子:

import java.io.FileInputStream;
import java.io.IOException;

public class FileInputStreamExample {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("example.txt");
int i;
while ((i = fis.read()) != -1) {
System.out.print((char) i);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

讓我們來分解一下:

  1. 我們導入了必要的類。
  2. 我們創建了一個FileInputStream對象,並指定了檔案名稱。
  3. 我們在while循環中逐字節讀取檔案。
  4. 我們將每個字節轉換為字符並打印它。
  5. 讀取完畢後,我們關閉流。
  6. 我們捕獲可能發生的任何IOException。

請記住,永遠要關閉你的流,以防止資源洩露!

2. 使用FileReader.read()方法讀取檔案

FileReader就像是去過補習學校的FileInputStream的表親。它專門設計用於讀取字符檔案。

以下是使用方法:

import java.io.FileReader;
import java.io.IOException;

public class FileReaderExample {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("example.txt");
int i;
while ((i = fr.read()) != -1) {
System.out.print((char) i);
}
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

這看起來和我們的FileInputStream例子非常相似,不是嗎?主要的區別在於FileReader是專門設計用於讀取字符的,因此更適合文本檔案。

3. 使用Files.readAllLines()方法讀取檔案

現在,如果FileInputStream是一根吸管,FileReader是一把湯匙,那麼Files.readAllLines()就像一次性把整杯奶昔倒進嘴裡一樣!它一次讀取檔案中的所有行。

以下是它的工作原理:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.List;

public class ReadAllLinesExample {
public static void main(String[] args) {
try {
List<String> lines = Files.readAllLines(Paths.get("example.txt"));
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

這個方法屬於較新的java.nio包。它一次讀取所有行到一個字符串列表中。然後我們可以輕鬆迭代這個列表以處理每一行。

檔案讀取方法比較

讓我們在下面的表格中總結我們的“檔案讀取食譜”:

方法 適用於 優點 缺點
FileInputStream 二進制檔案 適合原始字節數據 不適合文本
FileReader 文本檔案 專門設計用於字符數據 逐字符讀取
Files.readAllLines() 小到中等文本檔案 一次讀取整個檔案 對大檔案來說可能會占用大量記憶體

檔案操作中的錯誤處理

你可能已經注意到我們把代碼包在try-catch塊中。這是因為檔案操作可能會拋出IOException。這就像在處理熱菜時戴烤箱手套一樣 - 安全第一!

try {
// 檔案操作在這裡
} catch (IOException e) {
e.printStackTrace();
// 處理異常
}

在檔案操作中始終包含錯誤處理。這不僅是良好的實踐,對於健壯的代碼來說也是必不可少的。

結論

恭喜你!你剛剛學會了三種不同的方法來在Java中讀取檔案。請記住,每種方法都有其優勢,選擇正確的一個取決於你的具體需求。

當你繼續你的Java之旅時,你會發現檔案處理是一項必要的技能。這就像作為一名廚師學習閱讀食譜一樣 - 它打開了一個充滿可能性的世界!

繼續練習,保持好奇,編程愉快!

Credits: Image by storyset