我正在使用JDK 6
。
我有2个文件夹名称Folder1
和Folder2
。
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
我的代码没有显示任何错误,即使它不起作用。
我该如何解决这个问题。
由于
答案 0 :(得分:8)
使用Apache Commons
FileUtils
FileUtils.copyDirectory(source, desc);
答案 1 :(得分:1)
您的代码无效,因为要使用ApacheCommons解决方案,您必须下载此处的ApacheCommons库:
并添加对它的引用。
由于您使用的是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() );
}
参考: