Я пытаюсь записать файл, который может прочитать другой процесс. Я использую Printwiter для записи в файл. Но он не пишет в файл, пока я не завершаю программу. У меня есть eflbles autflush, и даже явно flusing. Код ниже -flush() метод printwriter не работает
import java.io.FileWriter;
import java.io.PrintWriter;
public class ReadFile {
public static void main(String[] args) {
try {
// Create a print writer
FileWriter fw = new FileWriter("D:\\SpringProjects\\RescilienceModel\\natural_resource.txt");
//BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(fw, true);
// Experiment with some methods
while(true)
{
pw.println(99);
pw.flush();
}
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
}
Как вы можете проверить, что ничего не записано в файл? Он должен работать так, как вы ожидаете. – sstan
Это может быть или не иметь отношения к проблеме, но, вероятно, стоит отметить, что документация для [Writer.flush()] (http://docs.oracle.com/javase/7/docs/api/ java/io/Writer.html # flush()) читает __ "Если предполагаемый пункт назначения этого потока является абстракцией, предоставляемой базовой операционной системой, например файлом, то очистка потока гарантирует, что только байты, ранее записанные в поток передаются в операционную систему для записи, это не гарантирует, что они фактически записаны на физическое устройство, такое как дисковод ». __ –
Это уже проблематично писать и читать в/из файла одновременно. ОС может буферизовать, кэшировать и загружать старые данные, пока вы не закроете дескриптор и не сообщите об обновлении. Скорее используйте общую память, каналы или блокирующие файлы для такого рода работы. – Youka