java - 如何将文本输出写入文件?

标签 java io

引用了本站的一些问题后,我了解到BufferedWriter可以用来将文本内容写入文件。我使用了以下代码行。但是,我看到没有输出被写入文件中。文件为空。

已编辑

Code Snippet:

private void findPrimes(int min, int max) throws IOException {
        for (int i = min; i <= max; i++) {
            boolean isPrime = true;
            BufferedWriter writer = new BufferedWriter(new FileWriter("/home/hduser/prime.txt"));
            if (i == 1) {
                writer.write("1 is not a prime.");
                continue;
            }
            if (i == 2 || i == 3 || i == 5 || i == 7) {
                writer.write(i + " is a prime");
                continue;
            }
            for (int j = 2; j <= 9; j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                writer.write(i + " is a prime.");
            } else {
                writer.write(i + " is not a prime. Its factors are ");
                writer.newLine();
                writer.flush();
                writer.close();
            }
        }
    }

最佳答案

除了 if 条件之外,就我而言,Writer 接口(interface)不能保证在显式关闭它们之前将数据刷新到磁盘。

尝试

writer.close()

当您完成文件写入后,查看此问题是否仍然存在。

编辑:

您应该只在方法的开头创建一次 BufferedWriter ,因为默认的文件写入过程包括截断以前的文件内容。您的代码应该类似于

private void findPrimes(int min, int max) throws IOException {
    BufferedWriter writer = new BufferedWriter(new FileWriter("/home/hduser/prime.txt"));

    for (int i = min; i <= max; i++) {
        boolean isPrime = true;

        if (i == 1) {
            writer.write("1 is not a prime.");
            writer.flush();
            continue;
        }

        if (i == 2 || i == 3 || i == 5 || i == 7) {
            writer.write(i + " is a prime");
            writer.flush();
            continue;
        }

        for (int j = 2; j <= 9; j++) {
            if (i % j == 0) {
                isPrime = false;
                break;
            }
        }

        if (isPrime) {
            writer.write(i + " is a prime.");
            writer.flush();
        } else {
            writer.write(i + " is not a prime. Its factors are ");
            findFactors(i);
            writer.newLine();
            writer.flush();
        }
    }
    writer.close();
}

关于java - 如何将文本输出写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22358587/

相关文章:

Java HttpServlet 没有从 backbone.js 获取 GET/POST

Java+Selenium+PageObject - 在哪里可以获得工作示例?

mysql - freebsd/mysql 5.5 高 i/o 使用率

java - Android:水平画廊 ScrollView ?

Java system.out 与新的 PrintStream

c - 找出读取/写入读取的字符数

c - getchar/putchar、gets/puts 和 fgets/fputs(C 语言)之间有什么区别?

arrays - 如何按段落或 block 将文件读入数组

javascript - 欢迎来到 socket.io。唯一的消息

java - 如何使用 close() 中止阻塞的 process.getInputStream().read()?