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

資訊專欄INFORMATION COLUMN

從官網學習Node.js FS模塊方法速查

jsummer / 1262人閱讀

摘要:最新文檔請查看倉庫所有文件操作提供同步和異步的兩種方式,本筆記只記錄異步的異步方式其最后一個參數是回調函數。最好將一個函數放在另一個函數的回調函數中去執行。另外回調函數中的參數,也是不保證一定存在。

最新文檔請查看倉庫 https://github.com/wangduandu...

1. File System

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

異步方式其最后一個參數是回調函數。回調函數的第一個參數往往是錯誤對象,如果沒有發生參數,那么第一個參數可能是null或者undefinded

同步函數可以使用try catch 捕獲異常

多個異步函數在同一層次執行,是無法保證順序的。最好將一個函數放在另一個函數的回調函數中去執行。這種回調的嵌套層次一旦過深,就會造成回調地獄

一般情況下,非常不建議使用同步的fs方法,因為同步的方法會阻斷其他事情,直到fs方法完成。

1.1. 文件路徑

filepaths目前支持4中

string

Buffer

URL Object

file:開頭的協議

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

1.2. 文件描述符

操作系統會限制文件描述符的數量

忘記關閉文件可能導致內存泄露或者程序崩潰

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

如果文件描述符的類型是文件,那么它不會自動關閉

寫操作會從文件的開頭,而不會覆蓋之后的內容。舉例:文件內容是Hello World, 如果在寫入"Aloha",那么文件的內容是Aloha World ,而不是"Aloha".

1.3. 線程池使用

fs所有的api,除了那些同步的api和fs.FSWatcher(), 基本上都使用libuv的線程池。在有些應用程序上,這個可能導致非常糟糕的性能表現。libuv的線程池有固定的大小,默認只有4個,可以通過設置環境變量UV_THREADPOOL_SIZE去增加libuv的線程的數量。

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

fs.readdir()或者fs.readdirSync()被調用,并且參數withFileTypestrue, 那么返回結果就是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 文件變動監控

來自 fs.watch()

Event

change

close

error

watcher.close()

注意:某些系統可能不會返回filename。如果encoding參數是buffer,那么文件名是以buffer的形式返回,默認文件名是utf-8格式的字符串。

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

來自fs.createReadStream()

Event

close

open

ready 第一次觸發是在open事件之后

readStream.bytesRead

readStream.path

readStream.pending

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

來自 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. 常用方法

測試

訪問權限測試 fs.access(path[, mode], callback) 測試是否可以訪問某個路徑。不建議fs.open(), fs.readFile() or fs.writeFile()調用前,調用fs.access去檢查

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

流操作

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

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

文件夾操作

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

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

創建臨時文件夾 fs.mkdtemp(prefix[, options], callback)

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

文件操作

打開文件 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)

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

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

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

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

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

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

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

復制文件 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

注意事項

fs.watch并不是百分百跨平臺。例如它的recursive參數僅支持macOS和windows。fs.watch的底層通知機制在不同平臺上的實現是不同的,如果底層不支持某個特性,那么fs.watch也是不能支持的。另外回調函數中的filename參數,也是不保證一定存在。

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

3. 參考

Node.js fs

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99983.html

相關文章

  • Node 基礎學習

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

    alaege 評論0 收藏0
  • Node.js學習總結

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

    kamushin233 評論0 收藏0
  • Node Hero】5. Node.js 數據庫教程

    摘要:是一種設計用于關系型數據庫的查詢語言。另一方面,數據庫在最近十年變得相當流行。大多數數據庫都有驅動程序可以用,它們在上也有庫。我們已經完成了在中使用數據庫所必須知道的所有基礎知識。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1751原文:https://blog.risingstack.com/node-js-database-t...

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

    摘要:入門你必須知道的那些事最基本的一些操作和概念用執行一段代碼在命令行中用切換到桌面創建一個文件夾和并用命令切換到這個文件夾創建一個文件并寫上簡單的代碼在命令行中輸入命令行會輸出引用文件的方式采用了規范通過來引入一個文件新建文件并在文件中引入執 入門node.js你必須知道的那些事 最基本的一些操作和概念 用node執行一段js代碼 在命令行中用cd切換到桌面 創建一個文件夾和并用cd命...

    learn_shifeng 評論0 收藏0
  • 前端速查表大全,分享一些技術和工具的簡明教程

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

    xiaochao 評論0 收藏0

發表評論

0條評論

jsummer

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<