每天學點node系列 fs檔案系統(續)

2022-02-02 03:25:55 字數 4728 閱讀 8816

理想如果不向現實做一點點屈服,那麼理想也將歸於塵土。

path| | options | - recursive 預設值: false。

- mode windows 上不支援。預設值: 0o777。

callback - err

// fs.mkdir(path[, mode], callback)

var fs = require('fs')

fs.mkdir('sub', function(err))

執行結果:

$ node 1.js

建立目錄成功

path| | - options | - recursive 預設值: false。

mode windows 上不支援。預設值: 0o777。

// fs.mkdirsync(path[, mode])

var fs = require('fs')

trycatch(e)

執行結果:

$ node 1.js

建立目錄成功

path| | options | - encoding 預設值: 'utf8'。

- withfiletypes 預設值: false。

callback - err - files | |

注意: files 是目錄中的檔名的陣列(不包括 '.' 和 '..')

let fs = require('fs')

fs.readdir('./sub', 'utf8', (err, files) => )

執行結果:

$ node 1.js

[ '1.css', 'index.html' ]

path | | options | - encoding 預設值: 'utf8'。設定為 'buffer',則返回的檔名是 buffer 物件。

- withfiletypes 預設值: false。 設定為 true,則返回的結果將包含 fs.dirent 物件。

返回: | |

let fs = require('fs')

try catch (error)

執行結果:

$ node 1.js

[ '1.css', 'index.html' ]

var fs = require('fs')

var path = require('path')

var getfilesindir = function (dir) else if (stats.isdirectory())

})return results

}var files = getfilesindir('./api');

console.log(files);

注意:fs.readdirsync()只會讀一層,所以需要判斷檔案型別是否目錄,如果是,則進行遞迴遍歷。

執行結果:

$ node 1.js

[ 'c:\\users\\administrator\\desktop\\api',

'c:\\users\\administrator\\desktop\\api\\config.1.json',

'c:\\users\\administrator\\desktop\\api\\config.json',

'c:\\users\\administrator\\desktop\\api\\config16.json',

'c:\\users\\administrator\\desktop\\api\\integral-consumpte'

...

path | | mode callback - err
var fs = require('fs')

fs.chmod('1.txt', '777', function (err) else

})

path | | mode
var fs = require('fs')

fs.chmodsync('./1.txt', '777')

path| | mode 預設值: fs.constants.f_ok。

callback - err

const fs = require('fs')

const file = '1.txt';

// 檢查當前目錄中是否存在該檔案。

fs.access(file, fs.constants.f_ok, (err) => $`);

});// 檢查檔案是否可讀。

fs.access(file, fs.constants.r_ok, (err) => $`);

});// 檢查檔案是否可寫。

fs.access(file, fs.constants.w_ok, (err) => $`);

});// 檢查當前目錄中是否存在該檔案,以及該檔案是否可寫。

fs.access(file, fs.constants.f_ok | fs.constants.w_ok, (err) => $`);

} else 存在,且它是可寫的`);

}});

執行結果:

$ node 1.js

1.txt 存在

1.txt 可讀

1.txt 可寫

1.txt 存在,且它是可寫的

不建議在呼叫 fs.open()、 fs.readfile() 或 fs.writefile() 之前使用 fs.access() 檢查檔案的可訪問性。 這樣做會引入競態條件,因為其他程序可能會在兩個呼叫之間更改檔案的狀態。 相反,應該直接開啟、讀取或寫入檔案,如果檔案無法訪問則處理引發的錯誤。

const fs = require('fs')

const file = '1.txt'

fs.access(file, (err) => 已存在`)

return

}fs.open(file, 'wx', (err, fd) => )

})

const fs = require('fs')

fs.open('1.txt', 'wx', (err, fd) =>

throw err

}writemydata(fd)

})

path| | mode 預設值: fs.constants.f_ok。
注意: 如果可訪問性檢查失敗,則丟擲 error。 否則,該方法將返回 undefined。

try  catch (err)
path| | callback - err
注意:在檔案(而不是目錄)上使用 fs.rmdir() 會導致在 windows 上出現 enoent 錯誤、在 posix 上出現 enotdir 錯誤。

var fs = require('fs')

fs.rmdir('./rock', function(err))

path | |
var fs = require('fs')

fs.rmdirsync('./rock')

使用獨佔標記建立鎖檔案

fs模組為所有需要開啟檔案的方法提供了乙個x標記。這告訴作業系統這個檔案應該以獨佔模式開啟(o_excl)。當使用這個方法時,若這個檔案存在,檔案不能被開啟。

策略是不斷的追加記錄,在處理的時候不斷的覆蓋原始記錄。

var fs = require('fs')

var eventemitter = require('events').eventemitter

var database = function (path) )

this._load()

}// 繼承自eventemitter,讓它有可以監聽事件、傳遞事件的功能

database.prototype = object.create(eventemitter.prototype)

database.prototype._load = function () )

var database = this

var data = ''

// 當輸入流準備好時觸發

stream.on('readable', function () else

} catch (e) }})

// 流處理完後傳送load事件給消費者

stream.on('end', function () )

}let database = new database('./sub/a.txt')

database._writestream.write('beep')

Node之檔案系統fs

var fs require fs 非同步讀取 fs.readfile input.txt function err,data console.log 非同步讀取 data.tostring 同步讀取 var data fs.readfilesync input.txt console.log 同步...

node學習筆記3 檔案操作fs

檔案操作關鍵字 http fs 請求 node 裡面的 http 模組 readfile 讀檔案,引數包括 檔名,函式 writefile 寫檔案,引數包括 檔名,修改的內容,函式 先看一下檔案目錄 來個新鮮出爐的 關於readfile 的栗子 const fs require fs readfil...

node04 fs檔案操作 靜態伺服器

給使用者加乙個五位數的id var userid parseint math.random 89999 10000 console.log 歡迎 userid res.writehead 200,兩個引數,第乙個是完整路徑,當前目錄寫.第二個引數,就是 函式,表示檔案讀取成功之後,做的事情,檔案前面...