Я пытаюсь переместить файл из одного каталога в другой.Я делаю это с
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 показывает :
как /
^^