如何释放文件的内容?

时间:2013-02-26 10:52:43

标签: java

我想写一个文件,如果它存在我想释放内容并从文件的开头写这个我使用的代码,但我现在不知道怎么做。

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) {

        }

5 个答案:

答案 0 :(得分:1)

FileWriter构造函数的第二个参数允许指定是要附加还是覆盖内容:

  

public FileWriter(File file,boolean append)抛出IOException

     

在给定File对象的情况下构造FileWriter对象。如果是第二个   参数为true,然后将字节写入文件的末尾   而不是开始。

     

参数:

     
      
  • file - 要写入的文件对象
  •   
  • 追加 - 如果是,那么   字节将写入文件的末尾而不是开头
  •   

在您的代码中,您传递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...
}

答案 1 :(得分:1)

你必须使用

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

您正在使用的append构造函数中的第二个参数FileWriter是一个标志,用于控制文件是否应在第一次写入之前被截断,或者应该追加数据写入。

see javadoc

答案 2 :(得分: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();

答案 3 :(得分: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();
        }
    }

}

答案 4 :(得分: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();

这样您只需创建/删除一次文件。