我可以使用相对但不是绝对路径重命名文件。为什么不?

时间:2018-03-17 16:23:33

标签: java clojure

我无法使用绝对路径重命名文件:

我玩过很多次搜索SO和其他网站但没有找到答案。

我有一个文件" / home / john / test / foo"。

在REPL中:

(use '[clojure.java.io])
nil
user=> (defn re-name
  #_=> "Rename a file"
  #_=> [old-path new-path]
  #_=> (.renameTo (file old-path) (file new-path)))
#'user/re-name
user=> (re-name  "foo" "bar")
true
user=> (re-name  "bar" "foo")
true
user=> (re-name  "/home/john/test/foo" "home/john/test/bar")
false 
user=> (re-name  "foo" "bar")
true

我想知道我错过了什么显而易见的事情......

1 个答案:

答案 0 :(得分:3)

你遗漏的显而易见的事情:-)是你正在重命名相对路径的绝对路径:

(re-name "/home/john/test/foo" "home/john/test/bar")

可能会失败,因为相对目录"home/john/test"不存在。

要了解程序的运行位置,您可以执行以下操作:

(System/getProperty "user.dir")

修复重命名:

(re-name "/home/john/test/foo" "/home/john/test/bar")