国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從官網(wǎng)學(xué)習(xí)Node.js FS模塊方法速查

jsummer / 1265人閱讀

摘要:最新文檔請(qǐng)查看倉(cāng)庫(kù)所有文件操作提供同步和異步的兩種方式,本筆記只記錄異步的異步方式其最后一個(gè)參數(shù)是回調(diào)函數(shù)。最好將一個(gè)函數(shù)放在另一個(gè)函數(shù)的回調(diào)函數(shù)中去執(zhí)行。另外回調(diào)函數(shù)中的參數(shù),也是不保證一定存在。

最新文檔請(qǐng)查看倉(cāng)庫(kù) https://github.com/wangduandu...

1. File System

所有文件操作提供同步異步的兩種方式,本筆記只記錄異步的API

異步方式其最后一個(gè)參數(shù)是回調(diào)函數(shù)。回調(diào)函數(shù)的第一個(gè)參數(shù)往往是錯(cuò)誤對(duì)象,如果沒(méi)有發(fā)生參數(shù),那么第一個(gè)參數(shù)可能是null或者undefinded

同步函數(shù)可以使用try catch 捕獲異常

多個(gè)異步函數(shù)在同一層次執(zhí)行,是無(wú)法保證順序的。最好將一個(gè)函數(shù)放在另一個(gè)函數(shù)的回調(diào)函數(shù)中去執(zhí)行。這種回調(diào)的嵌套層次一旦過(guò)深,就會(huì)造成回調(diào)地獄

一般情況下,非常不建議使用同步的fs方法,因?yàn)橥降姆椒〞?huì)阻斷其他事情,直到fs方法完成。

1.1. 文件路徑

filepaths目前支持4中

string

Buffer

URL Object

file:開(kāi)頭的協(xié)議

string 路徑會(huì)被解釋為utf-8格式,可以使用相對(duì)路徑和絕對(duì)路徑,相對(duì)路徑是當(dāng)前工作路徑,可以從process.cwd()獲取當(dāng)前工作路徑。

1.2. 文件描述符

操作系統(tǒng)會(huì)限制文件描述符的數(shù)量

忘記關(guān)閉文件可能導(dǎo)致內(nèi)存泄露或者程序崩潰

任何文件描述符都支持寫操作

如果文件描述符的類型是文件,那么它不會(huì)自動(dòng)關(guān)閉

寫操作會(huì)從文件的開(kāi)頭,而不會(huì)覆蓋之后的內(nèi)容。舉例:文件內(nèi)容是Hello World, 如果在寫入"Aloha",那么文件的內(nèi)容是Aloha World ,而不是"Aloha".

1.3. 線程池使用

fs所有的api,除了那些同步的api和fs.FSWatcher(), 基本上都使用libuv的線程池。在有些應(yīng)用程序上,這個(gè)可能導(dǎo)致非常糟糕的性能表現(xiàn)。libuv的線程池有固定的大小,默認(rèn)只有4個(gè),可以通過(guò)設(shè)置環(huán)境變量UV_THREADPOOL_SIZE去增加libuv的線程的數(shù)量。

1.4. Class: fs.Dirent 判斷文件類型

當(dāng)fs.readdir()或者fs.readdirSync()被調(diào)用,并且參數(shù)withFileTypestrue, 那么返回結(jié)果就是fs.Dirent objects, 而不是strings or Buffers

dirent方法

dirent.isBlockDevice()

dirent.isCharacterDevice()

dirent.isDirectory()

dirent.isFIFO()

dirent.isFile()

dirent.isSocket()

dirent.isSymbolicLink()

dirent.name

1.5. Class: fs.FSWatcher 文件變動(dòng)監(jiān)控

來(lái)自 fs.watch()

Event

change

close

error

watcher.close()

注意:某些系統(tǒng)可能不會(huì)返回filename。如果encoding參數(shù)是buffer,那么文件名是以buffer的形式返回,默認(rèn)文件名是utf-8格式的字符串。

fs.watch("./tmp", { encoding: "buffer" }, (eventType, filename) => {
  if (filename) {
    console.log(filename);
    // Prints: 
  }
});
1.6. Class: fs.ReadStream 可讀流

來(lái)自fs.createReadStream()

Event

close

open

ready 第一次觸發(fā)是在open事件之后

readStream.bytesRead

readStream.path

readStream.pending

1.7. Class: fs.Stats 獲取文件信息

來(lái)自 fs.stat(), fs.lstat() and fs.fstat() 以及他們的同步版本。

stats.isBlockDevice()

stats.isCharacterDevice()

stats.isDirectory()

stats.isFIFO()

stats.isFile()

stats.isSocket()

stats.isSymbolicLink()

Stats {
  dev: 2114,
  ino: 48064969,
  mode: 33188,
  nlink: 1,
  uid: 85,
  gid: 100,
  rdev: 0,
  size: 527,
  blksize: 4096,
  blocks: 8,
  atimeMs: 1318289051000.1,
  mtimeMs: 1318289051000.1,
  ctimeMs: 1318289051000.1,
  birthtimeMs: 1318289051000.1,
  atime: Mon, 10 Oct 2011 23:24:11 GMT,
  mtime: Mon, 10 Oct 2011 23:24:11 GMT,
  ctime: Mon, 10 Oct 2011 23:24:11 GMT,
  birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
1.8. Class: fs.WriteStream 可寫流

Event

close

open

ready

writeStream.bytesWritten

writeStream.path

writeStream.pending

2. 常用方法

測(cè)試

訪問(wèn)權(quán)限測(cè)試 fs.access(path[, mode], callback) 測(cè)試是否可以訪問(wèn)某個(gè)路徑。不建議fs.open(), fs.readFile() or fs.writeFile()調(diào)用前,調(diào)用fs.access去檢查

測(cè)試路徑是否存在 fs.exists(path, callback), 不建議fs.open(), fs.readFile() or fs.writeFile()調(diào)用前,調(diào)用fs.exists去檢測(cè)文件是否存在

流操作

創(chuàng)建可讀流 fs.createReadStream(path[, options])

創(chuàng)建可寫流 fs.createWriteStream(path[, options])

文件夾操作

創(chuàng)建文件夾 fs.mkdir(path[, options], callback)

刪除目錄 fs.rmdir(path, callback)

創(chuàng)建臨時(shí)文件夾 fs.mkdtemp(prefix[, options], callback)

讀取文件夾 fs.readdir(path[, options], callback)

文件操作

打開(kāi)文件 fs.open(path[, flags[, mode]], callback)

讀取文件 fs.read(fd, buffer, offset, length, position, callback)

讀取文件 fs.readFile(path[, options], callback)

重命名文件 fs.rename(oldPath, newPath, callback)

讀取文件信息 fs.stat(path[, options], callback)

刪除文件 fs.unlink(path, callback)

停止監(jiān)控文件 fs.unwatchFile(filename[, listener])

修改時(shí)間 fs.utimes(path, atime, mtime, callback)

監(jiān)控文件變化 fs.watch(filename, options)

關(guān)閉文件 fs.close(fd, callback)

追加文件 fs.appendFile(path, data[, options], callback)

改變文件模式 fs.chmod(path, mode, callback)

改變文件所屬 fs.chown(path, uid, gid, callback)

復(fù)制文件 fs.copyFile(fs.copyFile(src, dest[, flags], callback))

寫文件 fs.write(fd, buffer[, offset[, length[, position]]], callback)

寫文件 fs.write(fd, string[, position[, encoding]], callback)

寫文件 fs.writeFile(file, data[, options], callback)

其他

fs常量 fs.constants

注意事項(xiàng)

fs.watch并不是百分百跨平臺(tái)。例如它的recursive參數(shù)僅支持macOS和windows。fs.watch的底層通知機(jī)制在不同平臺(tái)上的實(shí)現(xiàn)是不同的,如果底層不支持某個(gè)特性,那么fs.watch也是不能支持的。另外回調(diào)函數(shù)中的filename參數(shù),也是不保證一定存在。

fs.watch()fs.watchFile()更高效,可能的話,盡量使用前者。

3. 參考

Node.js fs

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/99983.html

相關(guān)文章

  • Node 基礎(chǔ)學(xué)習(xí)

    摘要:既然這樣,怎么理解中的單線程再捋一捋和的關(guān)系。在線程上,不會(huì)等待操作完成,繼續(xù)執(zhí)行后續(xù)的代碼。這就是單線程異步。在中除了代碼,一切都是并行的由于中主任務(wù)的執(zhí)行是以單線程的方式進(jìn)行,如果程序出錯(cuò)導(dǎo)致崩潰,就會(huì)終止整個(gè)流程。 node是什么 Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境。 Node.js 使用了一個(gè)事件驅(qū)動(dòng)、非阻塞式 I/O 的模...

    alaege 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)總結(jié)

    摘要:表示當(dāng)前正在執(zhí)行的腳本的文件名。默認(rèn)編碼為模式為,為回調(diào)函數(shù),回調(diào)函數(shù)只包含錯(cuò)誤信息參數(shù),在寫入失敗時(shí)返回。參數(shù)使用說(shuō)明如下通過(guò)方法返回的文件描述符。 Node.js回調(diào) Node.js異步編程的直接體現(xiàn)就是回調(diào)。 阻塞代碼: const fs = require(fs); let data = fs.readFileSync(input.txt); console.log(data...

    kamushin233 評(píng)論0 收藏0
  • Node Hero】5. Node.js 數(shù)據(jù)庫(kù)教程

    摘要:是一種設(shè)計(jì)用于關(guān)系型數(shù)據(jù)庫(kù)的查詢語(yǔ)言。另一方面,數(shù)據(jù)庫(kù)在最近十年變得相當(dāng)流行。大多數(shù)數(shù)據(jù)庫(kù)都有驅(qū)動(dòng)程序可以用,它們?cè)谏弦灿袔?kù)。我們已經(jīng)完成了在中使用數(shù)據(jù)庫(kù)所必須知道的所有基礎(chǔ)知識(shí)。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1751原文:https://blog.risingstack.com/node-js-database-t...

    Hujiawei 評(píng)論0 收藏0
  • 入門node.js你必須知道的那些事

    摘要:入門你必須知道的那些事最基本的一些操作和概念用執(zhí)行一段代碼在命令行中用切換到桌面創(chuàng)建一個(gè)文件夾和并用命令切換到這個(gè)文件夾創(chuàng)建一個(gè)文件并寫上簡(jiǎn)單的代碼在命令行中輸入命令行會(huì)輸出引用文件的方式采用了規(guī)范通過(guò)來(lái)引入一個(gè)文件新建文件并在文件中引入執(zhí) 入門node.js你必須知道的那些事 最基本的一些操作和概念 用node執(zhí)行一段js代碼 在命令行中用cd切換到桌面 創(chuàng)建一個(gè)文件夾和并用cd命...

    learn_shifeng 評(píng)論0 收藏0
  • 前端速查表大全,分享一些技術(shù)和工具的簡(jiǎn)明教程

    摘要:這個(gè)速查表主要是分享互聯(lián)網(wǎng)上一些比較常用的工具和技術(shù)常用內(nèi)容,如編輯器的快捷鍵的命令行的選擇器的屬性等,這個(gè)列表簡(jiǎn)單收集了常用的工具,可以收藏用于平時(shí)的備忘錄,需要用到的時(shí)候可以及時(shí)查閱。 這個(gè)速查表主要是分享互聯(lián)網(wǎng)上一些比較常用的工具和技術(shù)常用內(nèi)容,如編輯器的快捷鍵、git的命令行、jQuery的API選擇器、CSS的flexbox屬性等,這個(gè)列表簡(jiǎn)單收集了常用的工具,可以收藏用于平...

    xiaochao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<