ClojureCLR版本的io/as-file
返回一个FileInfo
对象,它只能表示一个文件(而不是目录,因为目录是用DirectoryInfo
类表示的)。另一方面,JVM CLjure返回一个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
类。