在java中将文件从一个目录复制到另一个目录会抛出NoSuchFileException

时间:2015-04-10 01:25:32

标签: java

我有一个HashSet of Strings,它是我想要从工作的direcorory复制到" path"的文件的名称。目录。我发现下面的代码应该正常工作,但是,我得到java.nio.file.NoSuchFileException: /commits/1/hello.txt异常。

  Hashset<String> stagedQueue = HashSet<String>();
    stagedQueue.put("hello.txt");
    stagedQueue.put("bye.txt");


String path = "/commits/" + commitID;

                for (String file : stagedQueue) {
                    Files.copy((new File(file).toPath()), 
                        (new File(path + "/" + file).toPath()));

我该怎么做才能解决这个问题?我无法弄清楚为什么我会得到这些例外。请注意,我将这些文件移到一个空目录中。

1 个答案:

答案 0 :(得分:1)

不要通过File;你使用java.nio.file。

您的问题是您尝试将初始文件复制到目前尚不存在的目录中:

String path = "/commits/" + commitID;

首先,这是目标目录,因此请将其称为dstdir。然后创建基目录并将文件复制到其中:

final Path basedir = Paths.get("/commits", commitId);

Files.createDirectories(basedir);

for (final String file: baseQueue)
    Files.copy(Paths.get(file), basedir.resolve(file));