0

我正在尝试这个覆盖文件:

File file = new File(importDir, dbFile.getName());
DataOutputStream output = new DataOutputStream(
new FileOutputStream(file, false));                 
output.close();

但它显然用一个新的空文件覆盖了一个旧文件,我的目标是用提供的内容覆盖它file

我该如何正确地做到这一点?

4

4 回答 4

1

不幸的是,像文件复制这样简单的操作在 Java 中并不明显。

在 Java 7 中,您可以使用 NIO util 类文件,如下所示:

Files.copy(from, to);

否则它更难,而不是大量的代码,最好仔细阅读这个用Java复制文件的标准简洁方法?

于 2012-05-14T17:56:51.827 回答
0
    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");
于 2012-05-14T17:45:52.960 回答
0

您可以使用

FileOutputStream fos = new FileOutpurStream(file);

fos.write(string.getBytes());

构造函数将创建新文件,或者如果已经存在则覆盖它......

于 2012-05-14T17:50:14.393 回答
0

就我的目的而言,似乎最简单的方法是删除文件然后复制它

            if (appFile.exists()) {
                appFile.delete();
                appFile.createNewFile();
                this.copyFile(backupFile, appFile);
于 2012-05-14T20:20:33.230 回答