6

我正在使用JDK 6.

我有 2 个文件夹名称是Folder1Folder2

Folder1有以下文件

TherMap.txt

TherMap1.txt

TherMap2.txt

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

我想要的是,

复制任何文件folder1并将其粘贴到Folder2名称为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函数时,它显示错误,所以我点击错误,使用以下代码自动生成新包。

 package org.apache.commons.io;
 import java.io.File;
 public class FileUtils {
    public static void copyFile(File sourceFilePathObject,
        File statusFileNameObject) {
        // TODO Auto-generated method stub
    }
 }

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

我怎样才能解决这个问题。

谢谢

4

2 回答 2

9

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

于 2013-07-23T14:14:49.603 回答
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

用Java复制文件的标准简洁方法?

于 2013-07-23T15:17:07.520 回答