0

所以我想实现一个函数,将文件复制到一个新文件中,我将指定目录(我将创建它),然后,正如我在 stackoverflow 上找到的,使用 apache.commons 的Files.copy函数做的伎俩。

我的问题如下:我写了两个代码,一个有效,另一个无效,除了它们非常相似,我似乎没有捕捉到差异......

这是第一种方法的代码:

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() );

    }

在这一个中,我必须指定几个参数来创建一个目录的路径,创建该目录并最终在其中创建副本文件。它抛出 NoSuchFileException,虽然我知道该文件不存在,但我认为它可能会很好并自行创建它,但因为它没有:我继续并to.createNewFile();在文件实例化之后立即添加以确保,因此我将有以下代码:

(new File(pathOfDirectoryOfToFile)).mkdir();
File to = new File(pathOfToFile) ;
to.createNewFile();

Files.copy( from.toPath(), to.toPath() );

有了这个,我得到一个 IOException 说明找不到指定的访问路径!

第二种方法:

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 中的路径是动态的,而第二个是静态的,但这应该是一个问题吗?据我所知,这只是一个正在构建的字符串......

PS:我使用 System.out.println(to.toPath()) 来检查路径,它的结构很好。

在此先感谢您的帮助。

4

2 回答 2

2

第二个示例中的路径较短。mkdir()只会创建一个子目录,所以如果你去两个子目录,它将失败,当你尝试使用该目录中的文件时,它也会失败。

我怀疑您想要的是mkdirs()根据需要创建多级目录。

于 2013-05-13T09:52:16.660 回答
0

这个

String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName +"/" ; 
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ; 

看起来很可疑。它产生

"Folder/" + allFirmsFolderName +"/" + firmFolderName +"//" + copy_file_name ; 
于 2013-05-13T10:43:21.807 回答