【问题标题】:copying all files in a directory to another directory is not working将目录中的所有文件复制到另一个目录不起作用
【发布时间】:2021-02-04 15:26:57
【问题描述】:

公开课测试{

private static void copyGABuild(){
     try {
         String loc = "C:\\Users\\KAG\\Desktop\\\\test";
         
         Files.copy(Paths.get(loc), Paths.get("C:\\Users\\KAG\\Desktop"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    
    
    copyGABuild();

}

我收到此错误“java.nio.file.FileAlreadyExistsException”C:\Users\KAG\Desktop

我不想使用 FileUtils 来复制,有什么方法可以使用 Files. 并且目录 C:\Users\KAG\Desktop 中没有文件。但它仍然显示 FileAlreadyExistsException

【问题讨论】:

    标签: java file io


    【解决方案1】:

    根据this 链接,copy 方法接受一个 REPLACE_EXISTING 参数,这可以解决您的问题。

    您可以按如下方式实现:

    Files.copy(Paths.get(loc), Paths.get("C:\\Users\\KAG\\Desktop"), StandardCopyOption.REPLACE_EXISTING)
    

    试一试!

    编辑:

    docs:

    REPLACE_EXISTING – 即使目标文件已经存在也执行复制。如果目标是符号链接,则复制链接本身(而不是链接的目标)。如果目标是非空目录,则复制失败并出现 FileAlreadyExistsException 异常。

    如果是这种情况,我对您的问题发表了评论。祝你好运!

    【讨论】:

    • C:\Users\KAG\Desktop 里面没有文件,但还是说文件存在
    • C:\Users\KAG\Desktop 是空的吗?如果是,您可以在其中创建一个虚拟文件,然后重新运行您的代码吗?现在运行成功了吗?
    【解决方案2】:

    问题在于Files.copy 被指定为尽可能明确。 因此,您需要指定要创建/覆盖的目标。

    对于这样的文件:

    Files.copy(Paths.get(loc), Paths.get("C:\\Users\\KAG\\Desktop\\test"));
    

    错误:复制的目录没有内容! Javadoc:

    如果文件是一个目录,那么它会在目标位置创建一个空目录

    此方法可以与 walkFileTree 方法一起使用来复制目录和目录中的所有条目,或者在需要时复制整个文件树。

    不过Files 也有用于目录遍历的 Stream 方法。注意创建子目录的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-08
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多