如何使用jdk7移动目录

时间:2011-06-02 04:37:37

标签: java nio java-7 java.nio.file

使用 jdk7 ,我试图将java.nio.file.Filesmove一个空目录(假设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。

修改

除了接受的答案外,还有another solution

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();
}

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

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

答案 2 :(得分: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);