在从文件创建字符串之前,我们假设在我们的 src 文件夹中有一个名为 test.txt 的文件。
这是 test.txt 的内容
This is a Test file.
示例 1:从文件创建字符串
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class FileString {
public static void main(String[] args) throws IOException {
String path = System.getProperty("user.dir") + "\\src\\test.txt";
Charset encoding = Charset.defaultCharset();
List<String> lines = Files.readAllLines(Paths.get(path), encoding);
System.out.println(lines);
}
}
输出
[This is a, Test file.]
在上面的程序中,我们使用 System
的 user.dir
属性来获取存储在 path 变量中的当前目录。有关更多信息,请参见 Java程序获取当前目录。
我们使用 defaultCharset()
作为文件的编码。如果您知道编码,请使用它,否则使用默认编码是安全的。
然后,我们使用 readAllLines()
方法从文件读取所有行。它接受文件的 path 和 encoding,并按输出所示将所有行作为列表返回。
由于 readAllLines
也可能抛出 IOException,因此我们必须这样定义我们的 main 方法:
public static void main(String[] args) throws IOException
示例 2:从文件创建字符串
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileString {
public static void main(String[] args) throws IOException {
String path = System.getProperty("user.dir") + "\\src\\test.txt";
Charset encoding = Charset.defaultCharset();
byte[] encoded = Files.readAllBytes(Paths.get(path));
String lines = new String(encoded, encoding);
System.out.println(lines);
}
}
输出
This is a Test file.
在上面的程序中,我们得到的是一个单一的字符串 lines,包含所有内容,而不是一个 列表 字符串。
为此,我们使用 readAllBytes()
方法从给定路径读取所有字节。然后使用默认 encoding 将这些字节转换为字符串。