将txt文件移动到文件夹而不是在java中删除它们

时间:2011-02-21 22:14:38

标签: java file rename

我有一个代码来连接文件夹中的txt文件,并将连接文件移动到另一个文件夹中。 我的代码运行良好,但它连接后删除文件,所以我想在连接后将这些文件移动到另一个文件夹。

来自c:\ source的我的文件必须移动到c:\ Archive

这是我在开始的错误,我想移动文件,但我删除它们! 我想在源文件夹中没有文件时抛出异常。

所以我的代码是:

PrintWriter pw = new PrintWriter(new FileOutputStream("C:/Target/Filec.txt"));// directory where concatenated file are created

    File file = new File("C:/Source");// where files have to be concatenated and move to c:\Archive before deleting

    File[] files2 = file.listFiles();

    for (int i = 0; i < files2.length; i++)
    {

      File currentFile = files2[i];

      System.out.println("Processing " + currentFile.getPath() + "... ");

      BufferedReader br = new BufferedReader(new FileReader(currentFile));

      String line = br.readLine();

      while (line != null)
      {
        pw.println(line);
        line = br.readLine();
      }
      br.close();
      if (!currentFile.delete())
      {
        // Failed to delete file
        System.out.println("Failed to delete "+ currentFile.getName());
      }
    }
    pw.close();
    System.out.println("All files have been concatenated into Filec.txt");
    }
}

谢谢

3 个答案:

答案 0 :(得分:2)

要移动文件,请使用source.renameTo(targetFile)

如果源目录中没有文件,那么listFiles()将返回一个空数组,所以只需检查并抛出。

此外,如果您只想盲目连接文件,则无需逐行读取,只需打开FileInputStream,将块读取到byte []并使用FileOutputStream进行写入。可能更高效,更简单。

答案 1 :(得分:1)

您可以像这样移动文件:

// File (or directory) to be moved
File file = new File("filename");

// Destination directory
File dir = new File("directoryname");

// Move file to new directory
boolean success = file.renameTo(new File(dir, file.getName()));
if (!success) {
    // File was not successfully moved
}

答案 2 :(得分:1)

而不是 File.delete()使用FileUtils.moveFile()中的apache commons