2012-02-10 28 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(); 
} 

更新:

は、Java 7を使用している場合は、これを試してください:The Java Tutorialsから適応

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); 
} 

コード。

IPSがコンソールとファイルに印刷されているかどうか確認してください。

Fully working code の模擬実装。それは実行されるたびにmyfile.txtに5000のランダムなIPv4アドレス(有効性をチェックしない)を付加します。

+0

ええ私はファイルを閉じています。 – AKIWEB

+0

Nevzz03。申し訳ありませんが、私は作家を意味しました:D。 –

+0

コードを更新しました。まだそれは動作しません。 – AKIWEB

3

あなたは、私が推測するファイルまたはフラッシュバッファを閉じる必要があります。

+0

どうすればいいですか? – AKIWEB

+0

fileWritter.flush(); Java APIをブックマークしてください。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ループのように "while"ループを作成する必要があります。

0

プログラムの実行中にファイルに加えられた変更を確認したい場合あなたはをフラッシュする必要があります作家。遅かれ早かれ自動的にフラッシュされますのでご注意ください。テキストエディタで変更が表示されない理由は、エディタによって異なります。例えば、大きなファイルを開くことができません(あなたのプログラムでは、このファイルに文字を非常に速く追加しています)。ファイルのサイズを確認してください。サイズが増加している場合は動作します。

ファイルを監視する場合は、テールのようなツールを使用できます。

関連する問題