如何在 Java 中将文件读取为字符串

Rupam Yadav 2023年10月12日
  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
作者: 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