gpt4 book ai didi

java - 移动文件会导致文件名中路径分隔符为 "/"的文件

转载 作者:行者123 更新时间:2023-12-02 10:18:00 25 4
gpt4 key购买 nike

我尝试将文件从一个目录移动到另一个目录。我这样做是用

File fileToMove = new File("/Users/kai-dj/separator_problem/from/file_to_move.file");
File destDir = new File("/Users/kai-dj/separator_problem/to");
if (fileToMove.exists() && destDir.isDirectory()) {
fileToMove.renameTo(new File(destDir.getAbsolutePath()+File.pathSeparator+fileToMove.getName()));
}

我希望找到file_to_move.file在文件夹 /Users/kai-dj/separator_problem/to执行后,但我得到一个文件名为 to/file_to_move.file放置在父文件夹 /Users/kai-dj/separator_problem 。至少 Finder 是这样显示的。

正如我所想:“文件名不能包含路径分隔符,这不可能。”,我还检查了 ls将在终端输出:

mac-book:separator_problem kai-dj$ ls
from to:file_to_move.file
to

好的 – 似乎没有 /在文件名中。尽管如此,还是很奇怪。为什么 Finder 将其显示为包含 / 的文件名?为什么Java将文件重命名为<dirname>:<filename> – 尤其是当我使用 File.pathSeparator 时,不是/当然不是:

我也尝试过 Files.move – 相同的结果。

编辑:已解决,但我仍然想知道为什么 Finder 显示 :/ ^^

最佳答案

正如上面的评论中提到的,要使用的正确成员称为File.separator

此外,您通常可以避免使用 File.separator,而使用 Paths 代替:

System.out.println(Paths.get("/Users/kai-dj/separator_problem/to", fileToMove.getName()).toAbsolutePath());

关于java - 移动文件会导致文件名中路径分隔符为 "/"的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com