Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - 讀取檔案



在 Java 中讀取檔案

我們可以使用多種方法在 Java 中讀取檔案。以下是三種在 Java 中建立檔案的流行方法:

  • 使用 FileInputStream() 建構函式

  • 使用 FileReader.read() 方法

  • 使用 Files.readAllLines() 方法

讓我們看看在 Java 中讀取檔案的每種方法。

使用 FileInputStream() 建構函式讀取檔案

FileInputStream 用於從檔案讀取資料。可以使用關鍵字 new 建立物件,並且有幾種型別的建構函式可用。

語法

以下 建構函式 以字串形式獲取檔名以建立輸入流物件以讀取檔案:

InputStream f = new FileInputStream("C:/java/hello.txt");

語法

以下建構函式獲取檔案物件以建立輸入流物件以讀取檔案。首先,我們使用 File() 方法建立檔案物件,如下所示:

File f = new File("C:/java/hello.txt");
InputStream f = new FileInputStream(f);

示例:使用 FileInputStream() 建構函式讀取檔案

以下示例演示了使用 FileInputStream 從當前目錄讀取檔案:

package com.tutorialspoint;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileTest {
   public static void main(String args[]) {
      try {
         byte bWrite [] = {65, 66, 67, 68, 69};
         OutputStream os = new FileOutputStream("test.txt");
         for(int x = 0; x < bWrite.length ; x++) {
            os.write( bWrite[x] );   // writes the bytes
         }
         os.close();
     
         InputStream is = new FileInputStream("test.txt");
         int size = is.available();

         for(int i = 0; i < size; i++) {
            System.out.print((char)is.read() + "  ");
         }
         is.close();
      } catch (IOException e) {
         System.out.print("Exception");
      }	
   }
}

以上程式碼將建立檔案 test.txt 並以二進位制格式寫入給定的數字。將使用 FileInputStream 讀取相同的內容,並在標準輸出螢幕上列印輸出。

輸出

A  B  C  D  E  

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

FileReader 類 的 FileReader.read() 方法允許從檔案讀取字元,如下所示:

語法

// get an existing file
File file = new File("d://test//testFile1.txt");

// read content
FileReader reader = new FileReader(file);

int c;
while ((c = reader.read()) != -1) {
   char ch = (char) c;
   System.out.print(ch);
}

示例:使用 FileReader.read() 方法讀取檔案

以下示例演示了使用 FileReader.read() 方法從給定目錄讀取檔案的檔案:

package com.tutorialspoint;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileTest {
   public static void main(String args[]) {
      try {
         File file = new File("d://test//testFile1.txt");

         //Create the file
         if (file.createNewFile()) {
            System.out.println("File is created!");
         } else {
            System.out.println("File already exists.");
         } 

         // Write Content
         FileWriter writer = new FileWriter(file);
         writer.write("Test data");
         writer.close();


         // read content
         FileReader reader = new FileReader(file);

         int c;
         while ((c = reader.read()) != -1) {
            char ch = (char) c;
            System.out.print(ch);
         }
      } catch (IOException e) {
         System.out.print("Exception");
      }	
   }
}

以上程式碼將建立檔案 test.txt 並以文字格式寫入給定的字串。這將是標準輸出螢幕上的輸出。

輸出

File is created!
Test data

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

Files.readAllLines() 是一種較新的方法,用於將檔案的所有內容作為字串列表讀取,如下所示:

語法

List<String> content = Files.readAllLines(Paths.get("d://test/testFile3.txt"));

示例:使用 Files.readAllLines() 方法讀取檔案

以下示例演示了使用 readAllLines() 方法從給定目錄讀取檔案的檔案:

package com.tutorialspoint;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.List;

public class FileTest {
   public static void main(String args[]) {
      try {
    	  String data = "Test data";
          Files.write(Paths.get("d://test/testFile3.txt"), data.getBytes());
          List<String> lines = Arrays.asList("1st line", "2nd line");
          Files.write(Paths.get(
             "file6.txt"), lines, StandardCharsets.UTF_8, 
             StandardOpenOption.CREATE, StandardOpenOption.APPEND);
          
          List<String> content = Files.readAllLines(Paths.get("d://test/testFile3.txt"));

          System.out.println(content);
          
          content = Files.readAllLines(Paths.get("file6.txt"));

          System.out.println(content);
      } catch (IOException e) {
         System.out.print("Exception");
      }	
   }
}

以上程式碼將建立檔案 test.txt 並以文字格式寫入給定的字串。這將是標準輸出螢幕上的輸出。

輸出

[Test data]
[1st line, 2nd line]
廣告