2011-10-07 42 views
0
try{ 


private fileWriter= new PrintWriter(new FileWriter(file.txt)); 
       fileWriter.print("hello world"); 
       System.out.println("file written"); 

       fileWriter.close(); 
} 
catch (IOException e){ 
      e.printStackTrace(); 

     } finally { 
     } 

このテキストファイルはソースフォルダにあります。これまでのところ、アクセスには何のエラーもありませんでした。しかし、プログラムを閉じたり、テキストファイルを開いたときにファイルを書き込んだりすると、そのファイルが見つからないはずですが、binフォルダocneを確認して、そこの一時的なコピーにhello worldを印刷したようです。ファイルに印刷された変更が保存されていません。

変更が永続的になるようにします。

答えて

0

コードは大丈夫だった、パッケージエクスプローラに行くので - >プロジェクト - >プロパティ - > Javaのビルド・パス] - > [ソース] - > [

0

たぶんてFileWriterコンストラクタ

公衆てFileWriter(文字列のファイル名、ブールAPPEND)

にアペンドブールを使用してみてください...と私はそのノーので、そのデフォルトのクラスパスとして、binフォルダを使用します日食と思いますそのファイルがそこに書かれているのは驚きです。

私は助けてくれることを願っています:

+0

「ソースフォルダの出力を許可する」というボックスをチェックします残念ながら、appendを使用してもtrueまたはfalseのいずれの値も変更されていませんでした。 – user4090

+0

try: fileWriter.flush(); BufferedWriter out = new BufferedWriter(new FileWriter( "file.txt"、true))これは私にとってうまくいくものの、BufferedWritterを使用しているので、 ; out.write( "Hello World"); out.close(); –

+0

ええ、私はそれが働いている出力がビンにのみ書かれているようだので、私は右クリックしたプロジェクトに行った場合 - セットアップをビルドするソースフォルダの出力フォルダを許可するオプションがあったし、 binに出力して作業を開始しました – user4090

1

コードにはいくつか問題があります。次のように修正/簡略化します。

public static void main(String[] args) throws IOException { 
    PrintWriter fileWriter = new PrintWriter(new FileWriter(new File("file.txt"))); 
    fileWriter.print("hello world"); 
    System.out.println("file written"); 
    fileWriter.close(); 
} 

期待どおりにファイルを作成します。それを試してみて、それがあなたが期待しているように振る舞わないなら、どのように説明するのか。相対ファイルパスを指定すると、現在の作業ディレクトリに対するパスが解決されることに注意してください。ファイルが期待していない場所に書き込まれている場合は、おそらくこれが原因です。

1

binフォルダのファイルは一時ファイルではありません。実際に書き込んでいるファイルです。ソースフォルダー内のファイルに書き込む場合は、書き込み用にファイルを開くときに正しいファイルパスを使用する必要があります。 Javaは、アプリケーションを起動したフォルダへの相対パスを常に計算します。したがって、アプリケーションはおそらくbinフォルダで起動され、そこのfile.txtに書き込まれます。

関連する問題