用另一个非空数据覆盖数据库文件

时间:2012-05-14 17:42:26

标签: java android file

我正在尝试覆盖该文件:

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

但它显然会用新的空文件覆盖旧文件,我的目标是使用file

提供的内容来覆盖它

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

4 个答案:

答案 0 :(得分:1)

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

在Java 7中,您可以使用NIO util class Files,如下所示:

Files.copy(from, to);

否则更难以代替大量代码,请仔细阅读Standard concise way to copy a file in Java?

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

答案 2 :(得分:0)

您可以使用

  

FileOutputStream fos = new FileOutpurStream(file);

     

fos.write(string.getBytes());

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

答案 3 :(得分:0)

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

            if (appFile.exists()) {
                appFile.delete();
                appFile.createNewFile();
                this.copyFile(backupFile, appFile);