gpt4 book ai didi

java - 请告诉我为什么下面的代码不起作用?

转载 作者:行者123 更新时间:2023-11-29 03:25:39 27 4
gpt4 key购买 nike

当我运行代码时,一切正常,但内容没有写入 target.txt。

public class SrtExtractor {
public static void main(String[] args) throws IOException {
Path source = Paths.get("files/loremipsum.txt");
Path target = Paths.get("files/target.txt");
Charset charSet = Charset.forName("US-ASCII");
BufferedReader reader = Files.newBufferedReader(source, charSet);
BufferedWriter writer = Files.newBufferedWriter(target, charSet);
String temp;
ArrayList<String> list = new ArrayList<>();
while((temp = reader.readLine())!=null){
list.add(temp);
System.out.println(temp);
}
for(int i = 0; i<list.size(); i++)
{
writer.append(list.get(i));//why this line is not working???
}
}
}

最佳答案

您正在使用 BufferedWriter 类 - 在这种情况下,您写入的内容仍在缓冲区中。 writer.flush(); 需要被调用以刷新 Buffer 的内容并将它们写入底层流。

flush() 也会在调用 close() 时自动调用。 close() 应该在您的程序用完它的资源时调用,以避免内存泄漏。正确关闭资源可能很难正确执行,但 Java 7 添加了一个新的 try-with-resources construct帮助程序员正确关闭他们的资源。

这是重写为使用 try-with-resources 结构的示例。这将确保您的两个流都正确关闭,即使在处理文件时发生异常也是如此。它与在您的读取器和写入器上调用 close() 本质上相同,但它更安全并且使用更少的代码。

public class SRTExtractor {
public static void main(String[] args) throws IOException {
Path source = Paths.get("files/loremipsum.txt");
Path target = Paths.get("files/target.txt");
Charset charSet = Charset.forName("US-ASCII");
try (
BufferedReader reader = Files.newBufferedReader(source, charSet);
BufferedWriter writer = Files.newBufferedWriter(target, charSet);
) {
String temp;
ArrayList<String> list = new ArrayList<>();
while ((temp = reader.readLine()) != null) {
list.add(temp);
System.out.println(temp);
}
for (int i = 0; i < list.size(); i++) {
writer.append(list.get(i));
}
}
}
}

关于java - 请告诉我为什么下面的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com