34

私が書いたコードは、選択したテキスト ファイルの内容を上書きするはずですが、それを追加しています。私は正確に何を間違っていますか?

File fnew=new File("../playlist/"+existingPlaylist.getText()+".txt");
String source = textArea.getText();
System.out.println(source);
FileWriter f2;

try {
    f2 = new FileWriter(fnew,false);
    f2.write(source);
    /*for (int i=0; i<source.length();i++)
    {
        if(source.charAt(i)=='\n')
            f2.append(System.getProperty("line.separator"));
        f2.append(source.charAt(i));
    }*/
    f2.close();
} catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}           

編集

新しい temp.txt ファイルを作成して新しい内容を書き込んで、このテキスト ファイルを削除し、temp.txt の名前をこれに変更してみました。つまり、削除は常に失敗します。このためにユーザー権限を変更する必要はないと思いますか?

また、プログラムの一部がこのディレクトリ内のすべてのファイルを一覧表示しているため、それらはプログラムによって使用されているため、削除できないと推測しています。しかし、なぜ上書きしないのですか?

解決した

私の最大の「D'oh」の瞬間!私はそれを実行していたcmdではなく、Eclipseでコンパイルしてきました。そのため、新しくコンパイルされたクラスは bin フォルダーに移動し、コマンド プロンプトを介してコンパイルされたクラス ファイルは src フォルダーに同じままでした。新しいコードで再コンパイルしたところ、魅力的に機能します。

File fold=new File("../playlist/"+existingPlaylist.getText()+".txt");
fold.delete();
File fnew=new File("../playlist/"+existingPlaylist.getText()+".txt");
String source = textArea.getText();
System.out.println(source);

try {
    FileWriter f2 = new FileWriter(fnew, false);
    f2.write(source);
    f2.close();
} catch (IOException e) {
    e.printStackTrace();
}           
4

5 に答える 5

29

あなたのコードは私にとってはうまくいきます。期待どおりにファイル内のテキストを置き換え、追加しませんでした。

追加したい場合は、2番目のパラメーターを設定します

new FileWriter(fnew,false);

真に;

于 2012-12-05T18:22:07.557 に答える
9

解決した

私の最大の「D'oh」の瞬間!私はそれを実行していたcmdではなく、Eclipseでコンパイルしてきました。そのため、新しくコンパイルされたクラスは bin フォルダーに移動し、コマンド プロンプトを介してコンパイルされたクラス ファイルは src フォルダーに同じままでした。新しいコードで再コンパイルしたところ、魅力的に機能します。

File fold = new File("../playlist/" + existingPlaylist.getText() + ".txt");
fold.delete();

File fnew = new File("../playlist/" + existingPlaylist.getText() + ".txt");

String source = textArea.getText();
System.out.println(source);

try {
    FileWriter f2 = new FileWriter(fnew, false);
    f2.write(source);
    f2.close();

} catch (IOException e) {
    e.printStackTrace();
}   
于 2012-12-06T00:48:03.973 に答える
5

ファイルオブジェクトを初期化した後にもう1行追加

File fnew = new File("../playlist/" + existingPlaylist.getText() + ".txt");
fnew.createNewFile();
于 2012-12-05T18:14:15.570 に答える
1

これにより、少し簡素化され、必要に応じて動作します。

FileWriter f = new FileWriter("../playlist/"+existingPlaylist.getText()+".txt");

try {
 f.write(source);
 ...
} catch(...) {
} finally {
 //close it here
}
于 2012-12-05T18:19:54.800 に答える