1

ファイルに書き込みたいのですが、存在する場合はコンテンツを解放し、ファイルの先頭から使用するコードを書きたいのですが、今はその方法がわかりません。

try {
            File f = new File(testPath + "/logtest.txt");
            if (f.exists()) {
                f.delete();                                                                                             
                BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
                bw.write(text);
                bw.newLine();
                bw.close();
            } else {
                BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
                bw.write(text);
                bw.newLine();
                bw.close();

            }
        } catch (Exception e) {

        }
4

5 に答える 5

1

コンストラクターの 2 番目の引数をFileWriter使用すると、コンテンツに追加するか上書きするかを指定できます。

public FileWriter(File file, boolean append) が IOException をスローする

File オブジェクトを指定して FileWriter オブジェクトを構築します。2 番目の引数が true の場合、バイトはファイルの先頭ではなく末尾に書き込まれます。

パラメーター:

  • file - 書き込み先の File オブジェクト
  • append - true の場合、バイトはファイルの先頭ではなく末尾に書き込まれます

コードでは、 を渡しtrueます。単純に次のように変更しfalseます。

BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));

編集:質問で指定したコードがループ内にある場合は、次のように変更する必要があります。

try {
    File f = new File(testPath + "/logtest.txt");
    if (f.exists()) {
        f.delete();
    }
    BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));

    for/while (...) { // your loop here
        // extract your text
        bw.write(text);
    }

    bw.close();
    f.close();
} catch (Exception e) {
    // handle exceptions...
}
于 2013-02-26T10:58:35.477 に答える
1

使用する必要があります

BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));

使用しているコンストラクターの2番目のパラメーターappendFileWriter、最初の書き込みの前にファイルを切り捨てるか、書き込みデータを追加するかを制御するフラグウィッチです。

javadoc を参照

于 2013-02-26T10:59:33.923 に答える
0

f.delete();ループで実行するため、ファイルが削除されました。

次のような構成を行う必要があります。

File f = new File(testPath + "/logtest.txt");
if (f.exists()) {
    f.delete();     
}
BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));

while (...)
    String text = ...;

    bw.write(text);
    bw.newLine();
}
bw.close();

このようにして、ファイルを1回だけ作成/削除します。

于 2013-02-26T11:18:22.260 に答える
0

以下のコードを試してください。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;


public class FileClient {

    public static void main(String[] args) {
        try {

            String content = "Hello test";

            File file = new File("D:\\filename.txt");

            // if file doesnt exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }

            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content);
            bw.close();

            System.out.println("Done");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
于 2013-02-26T11:09:19.680 に答える
0

これを行うと、以前にあったものはすべて上書きされます。

    String fileName = "foo.txt";
    FileWriter fw = null;
    try{
        fw = new FileWriter(fileName);
        fw.write("haha");
    } catch (IOException e) {
        System.err.println("Could not write to the file.");
    }finally{
        if(fw!=null)
            try {
                fw.close();
            } catch (IOException e) {
                System.err.println("Could not close the file.");
            }
    }

データを追加したい場合

fw.append();
于 2013-02-26T11:04:16.590 に答える