当前位置: 首页 > 知识库问答 >
问题:

为什么它不能复制文件夹,只做文件

许高峻
2023-03-14

我有一个方法,它接受源地址、目标地址和ArrayList,然后它通过giver source文件夹,用ArrayList项检查每个文件,如果它们有相同的名称,那么它就用完全相同的文件夹结构复制目标(因此它需要文件夹)。在这里之前一切都有效。但如果ArrayList的项是文件夹名,则会出现错误。有些怎么找不到那个文件夹,然后出现错误。

public class Syncer {

    public static void main(String[] args) {
        File source = new File("D:\\Documents\\A X");
        File destination = new File("D:\\Documents\\A X Sample");
        ArrayList<String> list = new ArrayList<String>();
        list.add("third");

        folderCrawler(source, destination, list);
    }

    public static void folderCrawler(File src, File dest, ArrayList<String> filesToCopy){
        if(src.isDirectory()){
            String[] children = src.list();
            for(String file:children){

                if(filesToCopy.contains(file)){
                    File from = new File(src, file);
                    File to = new File(dest, file);
                    dest.mkdirs();

                    try{
                        copy(from, to);
                    }catch(IOException e){
                        e.printStackTrace();
                        System.exit(0);
                    }
                }
                else{System.out.println("Not Found");}
            }

            for (int i=0; i<children.length; i++){
                folderCrawler(new File(src, children[i]), new File(dest, children[i]), filesToCopy);
            }
        }
    }
    public static void copy(File src, File dest) throws IOException{
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dest);


        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        System.out.println("Copied: " + src.getName());
        in.close();
        out.close();
    }
}
java.io.FileNotFoundException: D:\Documents\A X\folder2\tohi\third (Access is denied)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at syncer.Syncer.copy(Syncer.java:61)
    at syncer.Syncer.folderCrawler(Syncer.java:45)
    at syncer.Syncer.folderCrawler(Syncer.java:55)
    at syncer.Syncer.folderCrawler(Syncer.java:55)
    at syncer.Syncer.main(Syncer.java:31)

在我的另一个mathchine中,我得到了同样的错误,但它是(是一个目录)而不是(访问被拒绝)

所以任何让它工作的想法,即使给了一个文件夹。所以它会用它的内部文件复制文件夹?

共有1个答案

李飞翼
2023-03-14

对不起,我没有足够的代表发表评论。

看看apache commons FileUtils。它们有很多复制功能,所以你不必自己实现它们。

 类似资料:
  • 我创建了一个复制类,它接受源文件夹和目标文件夹以及一个文件名数组。因此,该类搜索源文件夹,如果遇到与数组元素同名的文件,则将该文件复制到与源文件夹结构相同的文件夹结构中。下面是课程: 指向这一行:`新的复制文件(src、dest、array); 有什么解决的办法吗?

  • 每次我试图编译它来测试它不recongnise文件

  • 这里是Java 8。我有一个S3 bucket(),其文件夹子结构如下: 以下是文件夹的外观: 我有一个软件可以将图像文件上传到文件夹,然后我正在编写的另一个应用程序应该处理该图像并将其复制到文件夹。我必须执行这个S3副本的代码如下: 当它运行时,我看到以下日志输出: 但是文件夹的最终状态如下所示: 因此,它不是将复制到目录,而是直接在下创建一个新文件,并将其命名为,并可能将图像的二进制内容复制到

  • 我正在尝试将xlsx文件从文档文件夹保存到应用程序文件夹。这是代码,但显示错误: 错误Domain=nscocaerordomain Code=260“无法打开文件”file1.xlsx,“因为没有这样的文件。”UserInfo={NSFilePath=file:///private/var/mobile/Containers/Data/Application/8AC91C23-3662-44FF

  • 创建一个同步多线程系统,以确定三个文本文件中所有整数或分数的总数。如果流被阻塞,则必须将其名称显示为"LOCKED"。为什么只计算一个文件(带锁的线程)?程序显示的内容:Thread-0 Locked!线程-2锁定!123.321 322099只有一个文件

  • 我目前正在从事一个项目,具有以下架构: 项目A(将文件存储到文件夹中。应采用字节[]和名称,并应将数据写入文件中。不多,只是一个愚蠢的文件编写器应用程序) 项目B(应从数据库中读取数据,生成数据的xml文件,并将其作为字节[]发送给项目a,项目a将其写入文件系统) 现在我的问题是:在项目B中,我想将xml文件作为对象生成,但Jaxb Marshaller的API只提供marshal()方法,该方法