2015-09-26 3 views
0

Я пытаюсь записать файл, который может прочитать другой процесс. Я использую 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); 
      } 
    } 

} 
+0

Как вы можете проверить, что ничего не записано в файл? Он должен работать так, как вы ожидаете. – sstan

+0

Это может быть или не иметь отношения к проблеме, но, вероятно, стоит отметить, что документация для [Writer.flush()] (http://docs.oracle.com/javase/7/docs/api/ java/io/Writer.html # flush()) читает __ "Если предполагаемый пункт назначения этого потока является абстракцией, предоставляемой базовой операционной системой, например файлом, то очистка потока гарантирует, что только байты, ранее записанные в поток передаются в операционную систему для записи, это не гарантирует, что они фактически записаны на физическое устройство, такое как дисковод ». __ –

+0

Это уже проблематично писать и читать в/из файла одновременно. ОС может буферизовать, кэшировать и загружать старые данные, пока вы не закроете дескриптор и не сообщите об обновлении. Скорее используйте общую память, каналы или блокирующие файлы для такого рода работы. – Youka

ответ

3

Два вопроса.

  1. Проверьте, что while (true) loop, или он не закончится.

  2. закрыть() ваш дескриптор, или он не будет выделять ресурсы.

+0

Хотя это правда, он не отвечает на реальный вопрос. – sstan

+2

и 3. Используйте try с ресурсом, если используете 'Java - 7 +' –

Смежные вопросы