4

使用jdk7,我正在尝试使用java.nio.file.Files该类一个空目录移动Bar到另一个空目录中,比如说Foo

Path source = Paths.get("Bar");
Path target = Paths.get("Foo");
try {
    Files.move(
        source,
        target,  
        StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
    e.printStackTrace();
}

执行该代码片段后,我预计该Bar目录将位于Foo目录 ( ...\Foo\Bar) 中。相反,它不是。这是踢球者,它也被删除了。此外,没有抛出异常

我做错了吗?

笔记

我正在寻找特定于 jdk7 的解决方案。我也在研究这个问题,但我想我会看看是否还有其他人在玩 jdk7。

编辑

除了接受的答案之外,这是另一个解决方案

Path source = Paths.get("Bar");
Path target = Paths.get("Foo");
try {
    Files.move(
    source,
    target.resolve(source.getFileName()),  
    StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
    e.printStackTrace();
}
4

3 回答 3

4

我没有意识到 jdk7 java.nio.file.Files 是必需的,所以这里是编辑的解决方案。请看看它是否有效,因为我以前从未使用过新的 Files 类。

Path source = Paths.get("Bar");
Path target = Paths.get("Foo", "Bar");
try {
    Files.move(
        source,
        target,  
        StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
    e.printStackTrace();
}
于 2011-06-02T04:56:17.780 回答
0

在 Files.move 方法的 javadoc 中,您将找到一个示例,它将文件移动到目录中,并保持相同的文件名。这似乎是你要找的。

于 2011-06-02T10:15:32.890 回答
0

这是解决方案。


http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
假设我们要将文件移动到新目录,保持相同的文件名,并替换任何现有文件目录中的那个名字:

Path source = ...
Path newdir = ...
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
//Files.move(source, newdir.resolve(source.getFileName()), StandardCopyOption.REPLACE_EXISTING);
于 2013-05-30T23:40:39.977 回答