2012-02-10 4 views
2

Я пытаюсь создать файл и продолжать добавлять его в этот файл. В моем файле кода создается, но он не добавляет ничего в этот файл. Не знаете, почему? Может кто-нибудь предложить мне, что не так я делаю ..Невозможно записать в файл

Изменено Код: -

 File file =new File("D://GeoData1.txt"); 

    BufferedWriter out = new BufferedWriter(new FileWriter(file, true)); 


    int j = -1; 
    while(true) {   
     j++; 
     String ipAddress = generateIPAddress(j); 
     try { 
      out.write(ipAddress); 
      System.out.println(ipAddress); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
        out.flush(); 
        out.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

    } 

ответ

2

Вы closing писатель?

finally { 
    bufferWritter.close(); 
} 

Update:

Если вы используете Java 7, попробуйте следующее:

final int NUMBER_OF_IPS_TO_APPEND = 5000; // or whatever size 
Charset charset = Charset.defaultCharset(); 
Path file = Paths.get("myfile.txt"); 

try (BufferedWriter writer = Files.newBufferedWriter(file, charset, 
       StandardOpenOption.CREATE, 
       StandardOpenOption.APPEND)) { 
    for (int i = 1; i <= NUMBER_OF_IPS_TO_APPEND; i++) { 
     String ip = generateIPAddress(i); 
     System.out.printf("Generated ip: %s\n", ip); 
     writer.append(ip + "\n"); 
    } 
} catch (IOException x) { 
    System.err.format("IOException: %s\n", x); 
} 

код адаптированный The Java Tutorials.

Проверьте, распечатывается ли IPS на консоли и в файле.

Fully working code с макетным исполнением generateIPAddress. Он добавляет 5000 случайных IPv4-адресов (не проверяя их достоверность) до myfile.txt каждый раз, когда он выполняется.

+0

Да, я закрываю файл. – AKIWEB

+0

Nevzz03. Извините, я имел в виду писателя: D. –

+0

Я обновил код. Тем не менее его не работает. – AKIWEB

3

Вы должны закрыть файл или вытолкнуть буферы я думаю.

+0

Как я могу это сделать? – AKIWEB

+0

fileWritter.flush(); Пожалуйста, залогиньте API Java: http://docs.oracle.com/javase/7/docs/api/ – ra4king

+1

Вот способ очистки: http://docs.oracle.com/javase/6/docs/ api/java/io/BufferedWriter.html # flush() – Dims

0

Прежде всего, цикл никогда не заканчивается. Вы должны хотя бы остановить его в какой-то момент. Кроме того, вам необходимо закрыть файл, чтобы освободить память. Надеюсь, поможет!

--edit-- Чтобы закрыть файл, его

file.close(); 
+0

Я обновил код.Еще не работает – AKIWEB

1

Я хотел бы попробовать просто передавая этот файл писателю объект файла и избавлении от .getName()

BufferedWriter out = new BufferedWriter(new FileWriter(file, true)); 
+0

Я обновил код. Еще не работает – AKIWEB

1

У вас есть бесконечный цикл некоторое время (правда). Вы должны сделать точку останова с statemant или сделать цикл while в то время как (i < xy) ....

0

Если вы хотите увидеть изменения, внесенные в файл за время работы программы вам нужно флеш писатель. Обратите внимание, что рано или поздно он будет автоматически очищен. Причина, по которой вы не видите изменений в текстовом редакторе, зависит от вашего редактора. Например, он не может открыть такой большой файл (обратите внимание, что в вашей программе вы очень быстро добавляете символы в этот файл). Проверьте размер файла. Если размер увеличивается, то он работает.

Для того, чтобы следить за файлом, вы можете использовать такие инструменты, как tail.

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