在 Java 開發中,讀取檔案是基礎且重要的技能。本文將透過實際程式碼範例,詳細說明如何讀取一般文字檔(.log、.txt)以及 Word 文件(.doc),幫助開發者快速掌握檔案 I/O 操作。
以日誌檔 .log 為例,使用 BufferedReader 搭配 FileReader 可高效逐行讀取檔案內容:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) {
File file = new File("D:\\logserrorMsg.log");
// 檢查檔案是否存在
if (file.exists()) {
System.out.println("此檔案存在");
} else {
System.out.println("此檔案不存在");
return;
}
try (FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
// 取得檔案大小(MB)
long fileSizeMB = new FileInputStream(file).available() / 1024 / 1024;
System.out.println("檔案大小為(MB):" + fileSizeMB + "M");
} catch (FileNotFoundException e) {
System.err.println("找不到檔案:" + e.getMessage());
} catch (IOException e) {
System.err.println("讀取檔案發生錯誤:" + e.getMessage());
}
}
}
關鍵點說明:
try-with-resources 自動關閉資源,避免記憶體洩漏BufferedReader.readLine() 逐行讀取,適合大型檔案FileInputStream.available() 估算檔案大小讀取 Word 文件需使用 Apache POI 函式庫中的 WordExtractor 類別。
poi-scratchpad-{version}.jar 加入專案類別路徑import java.io.FileInputStream;
import org.textmining.text.extraction.WordExtractor;
public class WordTest {
public static void main(String[] args) throws Exception {
new WordTest().readWordDocument();
}
public void readWordDocument() throws Exception {
String filePath = "C:/test.doc";
try (FileInputStream fis = new FileInputStream(filePath)) {
WordExtractor extractor = new WordExtractor();
String content = extractor.extractText(fis);
System.out.println("Word 文件內容:");
System.out.println(content);
}
}
}
注意事項:
WordExtractor 僅支援舊版 .doc 格式(二進位格式).docx(OOXML 格式),請改用 XWPFDocument 類別本文示範了 Java 讀取文字檔與 Word 文件的兩種常見情境。文字檔讀取使用標準 I/O API 即可完成;Word 文件則需借助 Apache POI 函式庫。實際專案中,建議根據檔案大小與格式選擇適當的讀取策略,並妥善處理例外與資源釋放。