當 flag 選項採用字串時,可用以下標誌:
'a' - 開啟檔案用於追加。如果檔案不存在,則建立該檔案。
'ax' - 與 'a' 相似,但如果路徑已存在則失敗。
'a+' - 開啟檔案用於讀取和追加。如果檔案不存在,則建立該檔案。
'ax+' - 與 'a+' 相似,但如果路徑已存在則失敗。
'as' - 以同步模式開啟檔案用於追加。如果檔案不存在,則建立該檔案。
'as+' - 以同步模式開啟檔案用於讀取和追加。如果檔案不存在,則建立該檔案。
'r' - 開啟檔案用於讀取。如果檔案不存在,則出現異常。
'r+' - 開啟檔案用於讀取和寫入。如果檔案不存在,則出現異常。
'rs+' - 以同步模式開啟檔案用於讀取和寫入。指示作業系統繞過本地的檔案系統快取。
這對於在 nfs 掛載上開啟檔案時非常有用,因為它允許跳過可能過時的本地快取。 它對 i/o 效能有非常實際的影響,因此除非需要,否則不建議使用此標誌。
這不會將 fs.open() 或 fspromises.open() 轉換為同步的阻塞呼叫。 如果需要同步的操作,則應使用 fs.opensync() 之類的。
'w' - 開啟檔案用於寫入。如果檔案不存在則建立檔案,如果檔案已存在則截斷檔案。
'wx' - 與 'w' 相似,但如果路徑已存在則失敗。
'w+' - 開啟檔案用於讀取和寫入。如果檔案不存在則建立檔案,如果檔案已存在則截斷檔案。
'wx+' - 與 'w+' 相似,但如果路徑已存在則失敗。
flag 也可以是乙個數字, 常用的常量可以從 fs.constants 獲取。 在 windows 上,標誌會被適當地轉換為等效的標誌,例如 o_wronly 轉換為 file_generic_write、 o_excl|o_creat 轉換為能被 createfilew 接受的 create_new。
特有的 『x』 標誌可以確保路徑是新建立的。 在 posix 系統上,即使路徑是乙個符號鏈結且指向乙個不存在的檔案,它也會被視為已存在。 該特有標誌不一定適用於網路檔案系統。
在 linux 上,當以追加模式開啟檔案時,寫入無法指定位置。 核心會忽略位置引數,並始終將資料追加到檔案的末尾。
如果要修改檔案而不是覆蓋檔案,則標誌模式應為 『r+』 模式而不是預設的 『w』 模式。
某些標誌的行為是特定於平台的。 例如,在 macos 和 linux 上使用 『a+』 標誌開啟目錄(參閱下面的示例)會返回乙個錯誤。 而在 windows 和 freebsd 上,則返回乙個檔案描述符或 filehandle。
// 在 macos 和 linux 上:
fs.open(』《目錄》』, 『a+』, (err, fd) => );
// 在 windows 和 freebsd 上:
fs.open(』《目錄》』, 『a+』, (err, fd) => );
在 windows 上,使用 『w』 標誌開啟現存的隱藏檔案(通過 fs.open()、 fs.writefile() 或 fspromises.open())會丟擲 eperm。 現存的隱藏檔案可以使用 『r+』 標誌開啟用於寫入。
呼叫 fs.ftruncate() 或 fspromises.ftruncate() 可以用於重置檔案的內容。
標誌壞的扇區,強迫不讓檔案系統寫入
1 首先掃瞄出有哪些壞的扇區,記錄在badblocks sda.log中 badblocks s v o home tt badblocks sda.log dev sda 2 使用e2fsck標記壞的扇區 使壞的扇區不可寫 標誌之前首先要解除安裝相應的扇區 如解除安裝之前首先檢測有哪些程式占用分割...
檔案系統 why檔案系統
為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...
檔案系統 檔案系統的架構
vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...