java - 两个与Java类似的复制代码,两种行为

标签 java io java-io

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

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

这是第一种方法的代码:

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

P.S:我使用 System.out.println(to.toPath()) 来检查路径,它构造得很好。

预先感谢您的帮助。

最佳答案

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

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

关于java - 两个与Java类似的复制代码,两种行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16519096/

相关文章:

java - XML 子节点属性值

java - 如何 'wrap' 两个具有相同方法的类?

c - 如何编写 I/O 绑定(bind) C 程序?

Java stream 误解......一些澄清?

java - 如何将 Action 监听器和 Action 命令放入多个jbutton

java - 在基于 Visual Studio Code Maven 的 Java 项目中设置类路径

java - Excel Java 导入问题, header 签名无效?

c - 如何在C中将阻塞文件io转换为非阻塞文件

c++ - 如何捕获 I/O 异常(确切地说是 I/O,不是 std::exception)