如何将文件从目录复制到Java中的另一个目录

时间:2013-07-23 14:03:41

标签: java

我正在使用JDK 6

我有2个文件夹名称Folder1Folder2

Folder1包含以下文件

TherMap.txt

TherMap1.txt

TherMap2.txt

每次Folder2只有一个名称为TherMap.txt的文件。

我想要的,

folder1复制任何文件并粘贴到名称为Folder2的{​​{1}}中。如果TherMap.txt中已存在TherMap.txt,则删除并粘贴该文件。

因为我写了下面的代码。但它不能正常工作

Folder2

我在public void FileMoving(String sourceFilePath, String destinationPath, String fileName) throws IOException { File destinationPathObject = new File(destinationPath); File sourceFilePathObject = new File(sourceFilePath); if ((destinationPathObject.isDirectory()) && (sourceFilePathObject.isFile())) //both source and destination paths are available { //creating object for File class File statusFileNameObject = new File(destinationPath + "/" + fileName); if (statusFileNameObject.isFile()) //Already file is exists in Destination path { //deleted File statusFileNameObject.delete(); //paste file from source to Destination path with fileName as value of fileName argument FileUtils.copyFile(sourceFilePathObject, statusFileNameObject); } //File is not exists in Destination path. { //paste file from source to Destination path with fileName as value of fileName argument FileUtils.copyFile(sourceFilePathObject, statusFileNameObject); } } }

中调用上述函数
main()

当我使用 //ExternalFileExecutionsObject is class object ExternalFileExecutionsObject.FileMoving( "C:/Documents and Settings/mahesh/Desktop/InputFiles/TMapInput1.txt", "C:/Documents and Settings/mahesh/Desktop/Rods", "TMapInput.txt"); 函数时,它显示错误,因此我点击错误,自动使用以下代码生成新包。

FileUtils

我的代码没有显示任何错误,即使它不起作用。

我该如何解决这个问题。

由于

2 个答案:

答案 0 :(得分:8)

使用Apache Commons FileUtils FileUtils.copyDirectory(source, desc);

答案 1 :(得分:1)

您的代码无效,因为要使用ApacheCommons解决方案,您必须下载此处的ApacheCommons库:

http://commons.apache.org/

并添加对它的引用。

由于您使用的是JRE 6,因此无法使用所有NIO文件实用程序,尽管每个人都喜欢使用Apache Commons作为回答论坛帖子的快捷方式,但您可能不喜欢只需要添加该实用程序得到一个功能。您也可以使用此代码使用transferFrom方法而不使用ApacheCommons。

public static void copyFile(File sourceFile, File destFile) throws IOException {
  if (!destFile.exists()) {
    destFile.createNewFile();
  }
  FileInputStream fIn = null;
  FileOutputStream fOut = null;
  FileChannel source = null;
  FileChannel destination = null;
  try {
    fIn = new FileInputStream(sourceFile);
    source = fIn.getChannel();
    fOut = new FileOutputStream(destFile);
    destination = fOut.getChannel();
    long transfered = 0;
    long bytes = source.size();
    while (transfered < bytes) {
      transfered += destination.transferFrom(source, 0, source.size());
      destination.position(transfered);
    }
  } finally {
    if (source != null) {
      source.close();
    } else if (fIn != null) {
      fIn.close();
    }
    if (destination != null) {
      destination.close();
    } else if (fOut != null) {
      fOut.close();
    }
  }
}

升级到7时,您将能够执行以下操作

public static void copyFile( File from, File to ) throws IOException {
    Files.copy( from.toPath(), to.toPath() );
}

参考:

https://gist.github.com/mrenouf/889747

Standard concise way to copy a file in Java?