檔案系統標誌!

2021-09-26 06:16:34 字數 1604 閱讀 2347

當 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鍊錶...