首页 > 解决方案 > 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();
}

标签: javaoutputstreamfileoutputstreamprintwriter

解决方案


确保你总是关闭你的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();

编辑:当你closeoutputStream 它flush自动调用时,它将缓冲区写入文件。如果不关闭它,缓冲区可能永远不会被清空/写入文件,就像这里的情况一样。

另请参阅此答案


推荐阅读