两个类似的Java复制代码,两种行为
因此,我想实现一个函数,将一个文件复制到一个新文件中,我将指定该文件的目录(我将创建它),然后,正如我在stackoverflow上发现的那样,使用apache.commons的Files.copy函数来完成这项任务 我的问题是:我写了两个代码,一个有效,另一个无效,只是它们非常相似,我似乎无法捕捉到差异 以下是第一种方法的代码:两个类似的Java复制代码,两种行为,java,io,java-io,Java,Io,Java Io,因此,我想实现一个函数,将一个文件复制到一个新文件中,我将指定该文件的目录(我将创建它),然后,正如我在stackoverflow上发现的那样,使用apache.commons的Files.copy函数来完成这项任务 我的问题是:我写了两个代码,一个有效,另一个无效,只是它们非常相似,我似乎无法捕捉到差异 以下是第一种方法的代码: public static void copyToFile2 (String firmFolderName, String allFirmsFolderName, S
public static void copyToFile2 (String firmFolderName, String allFirmsFolderName, String copy_file_name, String copied_file_name) throws IOException {
File from = new File(copied_file_name) ;
String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName ;
//String pathOfDirectoryOfToFile = "Folder/fomrs/firm/" ;
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ;
(new File(pathOfDirectoryOfToFile)).mkdir();
File to = new File(pathOfToFile) ;
Files.copy( from.toPath(), to.toPath() );
}
public static void copyToFile1 (String firmFolderName, String allFirmsFolderName, String copy_file_name, String copied_file_name) throws IOException {
File from = new File(copied_file_name) ;
String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName +"/" ;
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ;
(new File("Folder/mdjs55/")).mkdir();
File to = new File("Folder/mdjs55/tm.jsp" ) ;
Files.copy( from.toPath(), to.toPath() );
}
在本例中,我必须指定几个参数,这些参数将伪造到目录的路径,创建该目录,并最终在其中创建副本文件。它抛出了一个NoSuchFileException,虽然我知道该文件不存在,但我认为自己创建它可能很好,但因为它没有:我继续向.createNewFile()添加了代码>在to文件实例之后,以确保,因此我将有以下代码:
(new File(pathOfDirectoryOfToFile)).mkdir();
File to = new File(pathOfToFile) ;
to.createNewFile();
Files.copy( from.toPath(), to.toPath() );
有了这个,我得到了一个IOException,声明找不到指定的访问路径
第二种方法:
public static void copyToFile2 (String firmFolderName, String allFirmsFolderName, String copy_file_name, String copied_file_name) throws IOException {
File from = new File(copied_file_name) ;
String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName ;
//String pathOfDirectoryOfToFile = "Folder/fomrs/firm/" ;
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ;
(new File(pathOfDirectoryOfToFile)).mkdir();
File to = new File(pathOfToFile) ;
Files.copy( from.toPath(), to.toPath() );
}
public static void copyToFile1 (String firmFolderName, String allFirmsFolderName, String copy_file_name, String copied_file_name) throws IOException {
File from = new File(copied_file_name) ;
String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName +"/" ;
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ;
(new File("Folder/mdjs55/")).mkdir();
File to = new File("Folder/mdjs55/tm.jsp" ) ;
Files.copy( from.toPath(), to.toPath() );
}
在这种情况下,它很好用
那是什么呢?唯一不同的是copyToFile2中的路径是动态的,而第二个是静态的,但这怎么会是一个问题呢?据我所知,这只是一个正在构建的字符串
我使用System.out.println(to.toPath())来检查它的路径,它构造得很好
提前感谢你的帮助 第二个示例中的路径较短mkdir()
将只创建一个子目录,因此如果您转到两个子目录,它将失败,并且当您尝试使用该目录中的文件时,它也将失败
我怀疑您想要的是mkdirs()
,它可以根据需要创建多个级别的目录。这
String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName +"/" ;
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ;
看起来可疑。它产生
"Folder/" + allFirmsFolderName +"/" + firmFolderName +"//" + copy_file_name ;
您得到了什么异常?在问题中提到了两个异常:NoSuchFile和IOException.Files.copy现在在Java 7中<代码>文件.copy(从.toPath()复制到.toPath(),StandardCopyOption.REPLACE_现有)
可能有用。@JoopEggen:我不知道,它是否具有与apache.commons中的File.copy相同的机制?它们之间有多大的不同?Java世代不断地集成通用库,尽管经常进行修改java.nio.file.Files
使用路径参数,您确定还没有使用该参数吗?FileUtils来自ApacheCommons I/O,完全不同。哦,有限的知识让我忽略了这种可能性,我会尝试一下,并给你一个反馈@Gloserio我认为,如果有人对Java有10%的了解,那将是致命的;)好的,尝试过了,它确实创建了目录,但是File.copy现在很生气,因为它抛出了这个异常:java.nio.File.filealreadyexistException:Folder\forms1\firms8\copy\u jijiji\u\u\u 1.jsp,非常有趣,因为我确保了该目录和复制文件的名称都不存在……您使用的是哪种文件系统?如果它是基于Windows的,您可能会发现它不喜欢某些文件名。但仍然很好奇:为什么mkdir()在copyFile1中工作而在copyFile2中不工作?哦,很抱歉,我犯了这个错误,但将其删除了,似乎我粘贴了一个旧代码。尽管如此,我可以向你保证,即使这个错误被消除了,我的问题仍然是正确的!我已经做了编辑,谢谢你提到@Evgeniy dorofev