5

在将更多信息写入文件之前,我需要删除文件的内容。我尝试了不同的方法,例如我删除内容但文件保持相同大小,当我在删除后开始写入时,在写入新数据之前,一个空白洞似乎是删除的大小.

这是我尝试过的...

BufferedWriter bw;
try {
    bw = new BufferedWriter(new FileWriter(path));
    bw.write("");
    bw.close();
}
catch (IOException e) {
    e.printStackTrace();
}

我也试过这个......

File f = new File(file);
FileWriter fw;

try {
    fw = new FileWriter(f,false);
    fw.write("");
}
catch (IOException e) {
    e.printStackTrace();
} 

有人可以帮我解决这个问题。

4

3 回答 3

8
FileWriter (path, false)

false 将告诉作者截断文件而不是追加文件。

于 2012-06-18T11:14:51.277 回答
1

flush()在调用之前尝试调用close()

FileWriter writer = null;

try {
   writer = ... // initialize a writer
   writer.write("");
   writer.flush(); // flush the stream
} catch (IOException e) {
   // do something with exception
} finally {
   if (writer != null) {
      writer.close();
   }
}
于 2012-06-18T10:01:29.217 回答
1

这可能是因为您没有关闭 FileWriter,fw.close(); 您也不需要“删除”旧数据,只需开始写入,它就会覆盖旧数据。因此,请确保您在所有地方都关闭。

这对我有用:

    File f=new File(file);
    FileWriter fw;
    try {
        fw = new FileWriter(f);
        fw.write("");
       fw.close();
    } catch (IOException e) {
        e.printStackTrace();
    } 
于 2012-06-18T15:26:31.883 回答