ClojureCLR版本的io/as-file
返回一个FileInfo
对象,它只能表示文件(而不是目录,因为目录由DirectoryInfo
类表示)。另一方面,JVM CLojure返回一个File
对象,它可以表示两者。这导致了评估结果的不同
Clojure
user=> (require '[clojure.java.io :as io])
nil
user=> (.exists (io/as-file "/"))
true
ClojureCLR
user=> (require '[clojure.clr.io :as io])
nil
user=> (.Exists (io/as-file "/"))
false
建议的修复方法是返回一个FileSystemInfo
对象,它是FileInfo
和DirectoryInfo
的父类,因此能够表示两者,类似于Java的File
类。