📜  java 读取文件到字符串 - Java (1)

📅  最后修改于: 2023-12-03 15:16:01.876000             🧑  作者: Mango

Java读取文件到字符串

在Java中,我们可以使用很多不同的方法来读取文件并将其存储为字符串。以下是一些常用的方法:

使用BufferedReader逐行读取文件
StringBuilder contentBuilder = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader("filename.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        contentBuilder.append(line).append("\n");
    }
} catch (IOException e) {
    e.printStackTrace();
}
String content = contentBuilder.toString();

在这个例子中,我们首先创建一个StringBuilder实例来保存文件内容,然后使用Java 7的try-with-resources语法来确保我们在完成文件读取后关闭BufferedReader。我们使用readLine()方法来逐行读取文件内容并将其附加到StringBuilder实例中。

使用Scanner读取文件
String content = new Scanner(new File("filename.txt")).useDelimiter("\\Z").next();

上述代码片段使用Scanner类来读取文件内容并使用“\Z”作为分隔符。在正则表达式中,\Z表示输入的结尾。因此,这段代码将读取整个文件并将其作为字符串返回。

使用Files类的readAllBytes方法
String content = new String(Files.readAllBytes(Paths.get("filename.txt")));

上述代码片段利用Java 7中的Files类来读取整个文件并将其转换为字符串。该代码使用路径字符串作为参数,并使用静态Paths.get方法将其转换为Path对象。Files.readAllBytes方法返回文件的所有字节并将其转换为字符串。

使用InputStream和ByteArrayOutputStream类读取文件
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
try (InputStream inputStream = new FileInputStream(new File("filename.txt"))) {
    while ((length = inputStream.read(buffer)) != -1) {
        result.write(buffer, 0, length);
    }
} catch (IOException e) {
    e.printStackTrace();
}
String content = result.toString(StandardCharsets.UTF_8);

上述代码利用Java的InputStream和ByteArrayOutputStream类来读取文件内容并将其转换为字符串。我们使用FileInputStream来获取文件的输入流,然后使用BufferedInputStream的read方法从流中读取数据并将其附加到ByteArrayOutputStream中。最后,我们使用toString方法将字节转换为字符串。

虽然Java 7 中引入的新特性可以让文件读取变得更加方便,但是使用传统的Java IO类也是完全可行的。在读取文件时,请对异常进行适当的处理和捕捉。

参考资料:Java 8 – Read file to string