Как записать текстовый вывод в файл?

1

Обратившись к некоторым вопросам на этом сайте, я узнал, что BufferedWriter можно использовать для записи текстового содержимого в файл. Я использовал следующие строки кода. Но, я вижу, в файл не записывается вывод. Файл пуст.

отредактированный

Фрагмент кода:

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();
            }
        }
    }
Теги:
io

3 ответа

0
Лучший ответ

Помимо ваших условий if, насколько мне известно, интерфейсы Writer не гарантируют сброс данных на диск, прежде чем вы их явно закрываете.

Пытаться

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();
}
  • 0
    Это сработало. Спасибо.
  • 0
    Зачем занижать ответ?
0

Это напишет файл в файл.

 private static void findPrimes(int min, int max) throws IOException {

   BufferedWriter writer = new BufferedWriter(new FileWriter(new File("/home/hduser/prime.txt")));

for (int i = min; i <= max; i++) {
    boolean isPrime = true;
     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.");
        writer.newLine();

    } else {
        writer.newLine();
        writer.write(i + " is not a prime.");

    }

}

writer.flush();

}

0

Вы пытались сделать

writer.flush();

перед вызовом

writer.close();

?

  • 0
    Да. Я пытался. Бесполезно Не весь контент записывается в файл.
  • 0
    Можете ли вы дать пример вывода и используемые параметры?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню