如何在 Java 中將檔案讀取為字串

Rupam Yadav 2023年1月30日 2020年10月15日
  1. 使用 Files.readString() 從 Java 11 中的檔案讀取字串
  2. 在 Java 8 中通過 Files.lines(file_path) 將檔案讀成字串
  3. 在 Java 7 中通過 Files.readAllLines() 從檔案中讀取字串
  4. BufferedReader.readLine 從檔案中讀取字串
如何在 Java 中將檔案讀取為字串

我們將介紹如何讀取一個檔案的內容,然後將其轉換為 Java 字串。

下面是 testFile.txt 檔案,其中包含了一些我們要讀成 Java 字串的內容。

A
B
C
D
1
2
3

使用 Files.readString() 從 Java 11 中的檔案讀取字串

Java 11 帶來了一個新的方法 Files.readString(),它允許我們輕鬆地讀取檔案,而不需要寫很多程式碼。


import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {

    public static void main(String[] args) {

        Path path = Paths.get("/Projects/testFile.txt");
      
        try {
            String content = Files.readString(path);
            System.out.println(content);
        }catch (IOException e){
            e.printStackTrace();
        }

        }
}

輸出:

A
B
C
D
1
2
3

在 Java 8 中通過 Files.lines(file_path) 將檔案讀成字串

Java 8 中引入了 Stream API,它以各種方式處理給定的資料集。

作為 java.NIO 包的一部分,Files 類包含一個 lines() 方法,可以從文字檔案中產生 Stream<String> 或字串流。

讓我們嘗試使用 Stream API 將檔案內容轉換為 Java 字串。


import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

    public static void main(String[] args){

      try{
        Path path = Paths.get("/Projects/testFile.txt");
        Stream<String> lines = Files.lines(path);

            String content = lines.collect(Collectors.joining(System.lineSeparator()));
            System.out.println(content);
            lines.close();
      }catch(IOException e){
        e.printStackTrace();
      }
    }
}

輸出:

A
B
C
D
1
2
3
注意

使用後一定要記住關閉流。注意 lines.close()

這樣可以確保在內容列印後就關閉流。

在 Java 7 中通過 Files.readAllLines() 從檔案中讀取字串

讀取檔案並不是那麼容易,直到 Java 7,它為 java.nio 包帶來了新的方法。它是 Files.readAllLines() 方法,從檔案中返回一個字串列表。每個字串代表檔案的一行。

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        try {

            Path path = Paths.get("/Projects/testFile.txt");
            List<String> contentList = Files.readAllLines(path, StandardCharsets.UTF_8);
            System.out.println(contentList);
            
        }catch (IOException e){
            e.printStackTrace();
        } 
    } 
} 

輸出:

[A, B, C, D, 1, 2, 3]

BufferedReader.readLine 從檔案中讀取字串

我們也可以使用 BufferedReader 類來獲取檔案的內容,它可以從輸入流中讀取文字。


import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

    public static void main(String[] args) throws IOException {

        String path = "/Projects/testFile.txt";

        try (BufferedReader br = new BufferedReader(new FileReader(path))) {

            String line = br.readLine();
            StringBuilder sb = new StringBuilder();

            while (line != null) {
                sb.append(line).append("\n");
                line = br.readLine();
            }

            String fileAsString = sb.toString();
            System.out.println(fileAsString);
        }
}
}

輸出:

A
B
C
D
1
2
3
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相關文章 - Java String

相關文章 - Java File