我正在尝试这个覆盖文件:
File file = new File(importDir, dbFile.getName());
DataOutputStream output = new DataOutputStream(
new FileOutputStream(file, false));
output.close();
但它显然用一个新的空文件覆盖了一个旧文件,我的目标是用提供的内容覆盖它file
我该如何正确地做到这一点?
不幸的是,像文件复制这样简单的操作在 Java 中并不明显。
在 Java 7 中,您可以使用 NIO util 类文件,如下所示:
Files.copy(from, to);
否则它更难,而不是大量的代码,最好仔细阅读这个用Java复制文件的标准简洁方法?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.print("Enter a file name to copy : ");
str = br.readLine();
int i;
FileInputStream f1;
FileOutputStream f2;
try
{
f1 = new FileInputStream(str);
System.out.println("Input file opened.");
}
catch(FileNotFoundException e)
{
System.out.println("File not found.");
return;
}
try
{
f2 = new FileOutputStream("out.txt"); // <--- out.txt is newly created file
System.out.println("Output file created.");
}
catch(FileNotFoundException e)
{
System.out.println("File not found.");
return;
}
do
{
i = f1.read();
if(i != -1) f2.write(i);
}while(i != -1);
f1.close();
f2.close();
System.out.println("File successfully copied");
您可以使用
FileOutputStream fos = new FileOutpurStream(file);
fos.write(string.getBytes());
构造函数将创建新文件,或者如果已经存在则覆盖它......
就我的目的而言,似乎最简单的方法是删除文件然后复制它
if (appFile.exists()) {
appFile.delete();
appFile.createNewFile();
this.copyFile(backupFile, appFile);