我有一个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()));
我该怎么做才能解决这个问题?我无法弄清楚为什么我会得到这些例外。请注意,我将这些文件移到一个空目录中。
答案 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));