
- Elixir 教程
- Elixir - 首頁
- Elixir - 概述
- Elixir - 環境
- Elixir - 基本語法
- Elixir - 資料型別
- Elixir - 變數
- Elixir - 運算子
- Elixir - 模式匹配
- Elixir - 決策
- Elixir - 字串
- Elixir - 字元列表
- Elixir - 列表和元組
- Elixir - 關鍵字列表
- Elixir - 對映
- Elixir - 模組
- Elixir - 別名
- Elixir - 函式
- Elixir - 遞迴
- Elixir - 迴圈
- Elixir - 可列舉
- Elixir - 流
- Elixir - 結構體
- Elixir - 協議
- Elixir - 檔案 I/O
- Elixir - 程序
- Elixir - 符號
- Elixir - 推導式
- Elixir - 型別說明
- Elixir - 行為
- Elixir - 錯誤處理
- Elixir - 宏
- Elixir - 庫
- Elixir 有用資源
- Elixir - 快速指南
- Elixir - 有用資源
- Elixir - 討論
Elixir - 檔案 I/O
檔案 I/O 是任何程式語言不可或缺的一部分,因為它允許語言與檔案系統上的檔案互動。在本章中,我們將討論兩個模組 - Path 和 File。
Path 模組
path 模組是一個非常小的模組,可以被認為是檔案系統操作的輔助模組。File 模組中的大多數函式都期望路徑作為引數。最常見的是,這些路徑將是常規二進位制檔案。Path 模組提供了處理此類路徑的功能。建議使用 Path 模組中的函式,而不是僅僅操作二進位制檔案,因為 Path 模組透明地處理不同的作業系統。需要注意的是,Elixir 在執行檔案操作時會自動將斜槓 (/) 轉換為反斜槓 (\)(在 Windows 上)。
讓我們考慮以下示例來進一步瞭解 Path 模組:
IO.puts(Path.join("foo", "bar"))
當執行以上程式時,它會產生以下結果:
foo/bar
path 模組提供了許多方法。您可以檢視不同的方法 此處。如果您正在執行許多檔案操作,則經常使用這些方法。
File 模組
file 模組包含允許我們將檔案開啟為 IO 裝置的函式。預設情況下,檔案以二進位制模式開啟,這要求開發人員使用 IO 模組中的特定 IO.binread 和 IO.binwrite 函式。讓我們建立一個名為 newfile 的檔案並向其中寫入一些資料。
{:ok, file} = File.read("newfile", [:write]) # Pattern matching to store returned stream IO.binwrite(file, "This will be written to the file")
如果您去開啟我們剛剛寫入的檔案,內容將以以下方式顯示:
This will be written to the file
現在讓我們瞭解如何使用 file 模組。
開啟檔案
要開啟檔案,我們可以使用以下 2 個函式中的任何一個:
{:ok, file} = File.open("newfile") file = File.open!("newfile")
現在讓我們瞭解 File.open 函式和 File.open!() 函式之間的區別。
File.open 函式始終返回一個元組。如果檔案成功開啟,它會將元組中的第一個值返回為 :ok,第二個值是 io_device 型別的字面量。如果發生錯誤,它將返回一個元組,第一個值為 :error,第二個值為原因。
另一方面,File.open!() 函式如果檔案成功開啟則會返回一個 io_device,否則會引發錯誤。注意:這是我們將要討論的所有 file 模組函式中遵循的模式。
我們還可以指定要以何種模式開啟此檔案。要以只讀模式和 utf-8 編碼模式開啟檔案,我們使用以下程式碼:
file = File.open!("newfile", [:read, :utf8])
寫入檔案
我們有兩種方法可以寫入檔案。讓我們看看第一個使用 File 模組中的 write 函式。
File.write("newfile", "Hello")
但是,如果您對同一個檔案進行多次寫入,則不應使用此方法。每次呼叫此函式時,都會開啟一個檔案描述符並生成一個新程序來寫入檔案。如果您在迴圈中進行多次寫入,請透過 File.open 開啟檔案,並使用 IO 模組中的方法寫入檔案。讓我們考慮一個示例來理解相同的內容:
#Open the file in read, write and utf8 modes. file = File.open!("newfile_2", [:read, :utf8, :write]) #Write to this "io_device" using standard IO functions IO.puts(file, "Random text")
您可以使用其他 IO 模組方法(如 IO.write 和 IO.binwrite)寫入以 io_device 開啟的檔案。
從檔案讀取
我們有兩種方法可以從檔案讀取。讓我們看看第一個使用 File 模組中的 read 函式。
IO.puts(File.read("newfile"))
執行此程式碼時,您應該獲得一個元組,其第一個元素為 :ok,第二個元素為 newfile 的內容。
我們還可以使用 File.read! 函式來獲取返回給我們的檔案內容。
關閉開啟的檔案
每當您使用 File.open 函式開啟檔案後,在完成使用後,都應使用 File.close 函式關閉它:
File.close(file)