java - Java:PrintWriter 未写入文件
问题描述
我遇到了一些问题PrintWriter
。我编写了一些代码,它们只是从文件中获取一些输入并将其输出到另一个文件。
虽然创建了一个文件,但该文件仍然是空的。想要的输入可以很容易地在控制台中打印出来,这意味着 FileInputStream 工作正常。
为什么 PrintWriter 不打印任何东西?
public static void writeInFile(File in, File out) throws FileNotFoundException {
PrintWriter outputStream = null
Scanner scanner = new Scanner(new FileInputStream(in));
outputStream = new PrintWriter(new FileOutputStream(out));
outputStream.print("test");
while(scanner.hasNext()) {
outputStream.print(scanner.nextLine() + "\n");
}
scanner.close();
}
解决方案
确保你总是关闭你的OutputStreams
:
while(scanner.hasNext()) {
String s = scanner.nextLine();
outputStream.print(s+"\n");
System.out.println("Test "+s); //d.h. das Problem liegt am outputstream
}
outputStream.close();
scanner.close();
编辑:当你close
outputStream 它flush
自动调用时,它将缓冲区写入文件。如果不关闭它,缓冲区可能永远不会被清空/写入文件,就像这里的情况一样。
另请参阅此答案。
推荐阅读
- vim - VIM:如何在不更改列的情况下将光标向下移动到块中的最后一行文本?
- tensorflow - 如何组合具有不同时间步长的两个时间序列数据集?
- python - 用另一个数组中的值替换 numpy 数组中的所有 -1
- node.js - 您在哪里以及如何导入节点模块?
- ios - Swift - UIButton 以编程方式设置约束
- ssl - 使用 *.herokuapp.com 域的缺点?
- java - 是否有可能有 3 个相互更改的 EditText 可以在所有 3 个之间互换的 EditText?
- ubuntu - 如何在 Ubuntu 上为 2 个不同的视频驱动程序设置 2 个启动配置?
- javascript - 西班牙语使用者的日期格式 - 返回 NaN 或无效日期
- mysql - 为什么我不能将数据导入 MySQL 中的模式?