回答
請看看File System Concepts,特別是在directory
。
例如,
- 使用
(directory "~/*")
讓您家中的文件列表, - 使用
(directory "~/*/")
讓你的家目錄列表, - 和
(directory "~/**/*")
得到所有的列表文件在您家中的所有子目錄中
請注意,directory
可能需要特定於實現的參數,如:full
。
如果你正在使用asdf
(你應該!),你可能想看看它附帶的uiop
。
PS。如果您的實現不支持路徑名中的~
來引用主目錄,則可以使用user-homedir-pathname
來代替。
請注意,作爲Homedirectory的路徑名中的Tilde是特定於實現的,但我期望所有基於Unix/Linux的實現都能支持它。 –
提及uiop是我需要的提示。這是我現在在我的測試用例中使用的,它適用於我:
(defun file-is-missing()
(let* ((cwd (uiop:getcwd))
(files (uiop:directory-files cwd)))
(format t "~&Current directory: ~a~%" cwd)
(dolist (file files)
(format t "~&~3T~a" file))
(format t "~&Provide new file: ")
(list (read-line))))
(defun read-file (file)
(restart-case
(with-open-file (s file :direction :input :if-does-not-exist :error)
(do ((l (read-line s) (read-line s nil 'eof)))
((eq l 'eof) "Reached end of file.")
(format t "~&*** ~A~%" l)))
(New-File (filename)
:interactive file-is-missing
(read-file filename))))
在提示新文件時(在READ-LINE和FORMAT之前),您應該使用'* QUERY-IO *'。這樣開發環境(比如SLIME/SLY)可以理解這是一個提示。您還應該在它們之間放置一個'(FINISH-OUTPUT * QUERY-IO *)',以確保在嘗試讀取任何內容之前打印提示。 – jkiiski
通常您不會以遞歸方式調用讀取文件,而是使用圍繞重新啓動情況表單的循環。 –
@RainerJoswig你能否給出一些背景信息,爲什麼要在這裏避免遞歸? –
- 1. 顯示目錄內容
- 2. 打印當前目錄的內容C++
- 3. 僅顯示當前畫廊的內容
- 4. 便攜式類庫的IoC容器
- 5. 便攜式Eclipse
- 6. 便攜式MongoDB?
- 7. 便攜式erlang
- 8. Windbg便攜式?
- 9. 根據當前顯示的內容更改鏈接的目標
- 10. 便攜式方式
- 11. Node.js將子目錄的內容移動到當前目錄
- 12. 目錄的顯示內容Ruby
- 13. 顯示目錄的內容Android
- 14. 如何顯示目錄的內容
- 15. 根據當前網站顯示內容
- 16. 在便攜式彙編中獲取當前方法的MethodInfo
- 17. 便攜式類庫 - 目標的Silverlight 5
- 18. pyspark:如何顯示當前目錄?
- 19. T4MVC是否兼容便攜式操作?
- 20. C/C++中的便攜式目錄/文件監視庫
- 21. 在uitableview中顯示目錄內容
- 22. C++顯示目錄內容問題
- 23. 便攜式WAMP包?
- 24. 便攜式shebang線
- 25. 便攜式Vim E117
- 26. 便攜式領域
- 27. 便攜式C#IDE?
- 28. 便攜式__attribute__((__packed__))
- 29. 便攜式PySide庫?
- 30. Xamarin.Forms便攜式+ Mono.Data.Sqlite.Portable
Uiop(包含在ASDF中)具有可移植的文件系統/ os實用程序。 '(uiop/filesystem:目錄文件(uiop/os:getcwd))'。 – jkiiski