我想編寫一個簡單的播放聲音片段的程序。我想在Windows,Linux和MacOSX上部署它。仍令我困惑的事情是配置文件和文件夾在不同操作系統上的聲音片段的位置。我是Clojure noob。我知道Common Lisp有特殊的文件系統可移植性庫CL-FAD。如何在閉合中完成?我如何在不同的系統上使用不同的文件系統約定來編寫可移植的Clojure程序?Clojure文件系統的可移植性
7
A
回答
21
您可以使用clojure.java.io/file
以(主要)平臺無關的方式構建路徑,與Python中的os.path.join
或Ruby中的File.join
類似。
(require '[clojure.java.io :as io])
;; On Linux
(def home "/home/jbm")
(io/file home "media" "music") ;=> #<File /home/jbm/media/music>
;; On Windows
(def home "c:\\home\\jbm")
(io/file home "media" "music") ;=> #<File c:\home\jbm\media\music>
clojure.java.io/file
返回java.io.File
。如果你需要回到一個字符串,你可以隨時使用.getPath
:
(-> home
(io/file "media" "music")
(.getPath))
;=> /home/jbm/media/music"
那是諸如此類的事情,你腦子裏?
除了clojure.java.io
(當然還有java.io.File
上的方法),raynes.fs
是一個流行的文件系統實用程序庫。
+0
要取回一個字符串,你也可以使用'(str path)' –
1
請注意,Windows完全支持正斜槓作爲路徑分隔符(這非常棒,因爲這種方式您不必始終避免反斜槓)。
您遇到的唯一重大困難是Windows和UNIX系統上的「標準」位置(主文件夾等)不同。因此,您需要從系統屬性中獲取這些信息(請參見http://docs.oracle.com/javase/7/docs/api/java/lang/System.html中的getProperty
方法)。
0
對於獨立於平臺的方法,您可以從相對於項目的路徑找到規範路徑,然後將其與文件名相加。
(:require [clojure.java.io :as io :refer [file]]))
(defn file-dir
"Returns canonical path of a given path"
[path]
(.getCanonicalPath (io/file path)))
(-> "./resources" ;; relative
(file-dir)
(io/file "filename.txt")) ;;=> /path/to/project/resources/filename.txt
相關問題
- 1. 構建系統和可移植性
- 2. 文件系統是否影響應用程序的可移植性?
- 3. ffmpeg可移植性所需的文件
- 4. Android操作系統移植
- 5. GLOB_BRACE可移植性?
- 6. EJB可移植性
- 7. fwrite可移植性
- 8. MinGW可移植性
- 9. Linq可移植性
- 10. 雲可移植性
- 11. JavaScriptCore可移植性
- 12. OpenCV可移植性
- 13. dlfunc的可移植性?
- 14. nextElementSibling/nextSibling的可移植性
- 15. 如何將文件系統移植到Android?
- 16. 將Groovy DSL移植到Clojure
- 17. Gtk/python和可移植性
- 18. SQLite庫 - Python可移植性
- 19. __try和__exception可移植性
- 20. Python可移植性問題
- 21. std :: errc ABI可移植性
- 22. 共享庫可移植性
- 23. C - Glib GINT_TO_POINTER可移植性
- 24. FreeTTS可移植性問題
- 25. BDB文件是否可以從一個系統架構移植到另一個系統架構
- 26. Erlang透析器不同體系結構之間的PLT文件可移植性
- 27. 文件系統可擴展性選項
- 28. Boost Windows程序是否可移植到其他Windows系統?
- 29. PHP password_hash():密碼哈希是否可在系統之間移植?
- 30. Windows Azure - 可移植性和遷移?
看一看http://richhickey.github.io/clojure/clojure.java.io-api.html – Chiron
@Chiron:http://clojure.github.io/clojure/clojure.java .io-api.html是一個更好的網址。 clojure.github.io是當前文檔的放置位置,而Rich Hickey帳戶中的版本來自版本1.1。 – Chuck