Elixir語言中 File
相關用法介紹如下。
該模塊包含操作文件的函數。
其中一些函數是低級的,允許用戶與文件或 IO 設備進行交互,例如
、 open/2
等。該模塊還提供了更高級別的函數,這些函數可以處理文件名,並且它們的命名基於 Unix 變體。例如,可以通過 copy/3
複製文件並通過 cp/3
遞歸刪除文件和目錄。rm_rf/1
此模塊中函數的路徑可以是相對於當前工作目錄的路徑(由
返回),也可以是絕對路徑。 File.cwd/0
~
等 Shell 約定不會自動擴展。要使用 ~/Downloads
之類的路徑,您可以使用
或 Path.expand/1
將路徑擴展為絕對路徑。Path.expand/2
編碼
為了寫入和讀取文件,必須使用
模塊中的函數。默認情況下,文件以二進製模式打開,這需要函數IO
和IO.binread/2
與文件交互。開發人員可以在打開文件時將IO.binwrite/2
:utf8
作為選項傳遞,然後必須使用較慢的
和IO.read/2
函數,因為它們負責進行正確的轉換並提供正確的數據保證。IO.write/2
請注意,在 Elixir 中作為字符列表給出的文件名始終被視為 UTF-8。特別是,我們希望 shell 和操作係統配置為使用 UTF-8 編碼。二進製文件名被視為原始文件名並按原樣傳遞給操作係統。
API
此模塊中的大多數函數在成功的情況下返回:ok
或{:ok, result}
,否則返回{:error, reason}
。這些函數還有一個以!
結尾的變體,它在成功的情況下返回結果(而不是{:ok, result}
元組),或者在失敗的情況下引發異常。例如:
File.read("hello.txt")
#=> {:ok, "World"}
File.read("invalid.txt")
#=> {:error, :enoent}
File.read!("hello.txt")
#=> "World"
File.read!("invalid.txt")
#=> raises File.Error
一般來說,如果文件不存在,開發人員應該使用前者,以防他們想要做出反應。當開發人員希望他們的軟件在無法讀取文件的情況下失敗(即它實際上是一個例外)時,應該使用後者。
進程和原始文件
每次打開文件時,Elixir 都會生成一個新進程。寫入文件相當於向寫入文件說明符的進程發送消息。
這意味著文件可以在節點之間傳遞,並且消息傳遞保證它們可以寫入網絡中的同一個文件。
但是,您可能並不總是希望為這種抽象付出代價。在這種情況下,可以在:raw
模式下打開文件。選項 :read_ahead
和 :delayed_write
在處理大文件或在緊密循環中處理文件時也很有用。
檢查
以獲取有關此類選項和其他性能注意事項的更多信息。:file.open/2
相關用法
- Elixir File.cp_r用法及代碼示例
- Elixir File.rm用法及代碼示例
- Elixir File.rmdir用法及代碼示例
- Elixir File.exists?用法及代碼示例
- Elixir File.touch!用法及代碼示例
- Elixir File.stream!用法及代碼示例
- Elixir File.rename用法及代碼示例
- Elixir File.open用法及代碼示例
- Elixir File.rm_rf用法及代碼示例
- Elixir File.regular?用法及代碼示例
- Elixir File.touch用法及代碼示例
- Elixir File.dir?用法及代碼示例
- Elixir Float.to_charlist用法及代碼示例
- Elixir Float.ratio用法及代碼示例
- Elixir Float.to_string用法及代碼示例
- Elixir Function.identity用法及代碼示例
- Elixir Float.ceil用法及代碼示例
- Elixir Float.pow用法及代碼示例
- Elixir Function用法及代碼示例
- Elixir Function.info用法及代碼示例
- Elixir Function.capture用法及代碼示例
- Elixir Float.round用法及代碼示例
- Elixir Float.floor用法及代碼示例
- Elixir Float.parse用法及代碼示例
- Elixir StringIO.flush用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 File。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。