我想写一个文件,如果它存在我想释放内容并从文件的开头写这个我使用的代码,但我现在不知道怎么做。
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) {
}
答案 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
是一个标志,用于控制文件是否应在第一次写入之前被截断,或者应该追加数据写入。
答案 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();
这样您只需创建/删除一次文件。