Обратившись к некоторым вопросам на этом сайте, я узнал, что 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();
}
}
}
Помимо ваших условий 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();
}
Это напишет файл в файл.
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();
}
Вы пытались сделать
writer.flush();
перед вызовом
writer.close();
?