<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 穩定度: 2 - 穩定 文件I/O是由標準POSIX函數的簡單包裝提供的。通過`require('fs')`來使用這個模塊。所有的方法都有異步和同步兩種形式。 異步形式的方法通常在最后一個參數上接受一個回調函數。回調函數的參數則取決于不同的方法,但是第一個參數總是為異常所保留。如果操作正常結束,那么第一個參數會是`null`或`undefined`。 當同步形式的方法產生異常時,會立刻拋出。你可以使用`try/catch`捕獲,或讓它們冒泡。 下面是一個異步方法的例子: ~~~ var fs = require('fs'); fs.unlink('/tmp/hello', function (err) { if (err) throw err; console.log('successfully deleted /tmp/hello'); }); ~~~ 下面是一個同步方法的例子: ~~~ var fs = require('fs'); fs.unlinkSync('/tmp/hello'); console.log('successfully deleted /tmp/hello'); ~~~ 因為異步方法不能夠保證執行順序,所以下面的例子很容易出錯: ~~~ fs.rename('/tmp/hello', '/tmp/world', function (err) { if (err) throw err; console.log('renamed complete'); }); fs.stat('/tmp/world', function (err, stats) { if (err) throw err; console.log('stats: ' + JSON.stringify(stats)); }); ~~~ 它需要在`fs.rename`后執行`fs.stat`。正確的執行方法應如下: ~~~ fs.rename('/tmp/hello', '/tmp/world', function (err) { if (err) throw err; fs.stat('/tmp/world', function (err, stats) { if (err) throw err; console.log('stats: ' + JSON.stringify(stats)); }); }); ~~~ 在繁忙的進程中,十分推薦使用異步版本的方法。同步版本的方法會阻塞進程,直到它們完成,也就是說它們會暫停所有連接。 文件的相對路徑也可以被使用,記住路徑是相對于`process.cwd()`的。 大多數的`fs`函數允許你省略回調函數。如果你省略了,將會由一個默認的回調函數來重拋出(rethrows)錯誤。要獲得原始調用地點的堆棧追蹤信息,請設置`NODE_DEBUG`環境變量: ~~~ $ cat script.js function bad() { require('fs').readFile('/'); } bad(); $ env NODE_DEBUG=fs iojs script.js fs.js:66 throw err; ^ Error: EISDIR, read at rethrow (fs.js:61:21) at maybeCallback (fs.js:79:42) at Object.fs.readFile (fs.js:153:18) at bad (/path/to/script.js:2:17) at Object.<anonymous> (/path/to/script.js:5:1) <etc.> ~~~ #### fs.rename(oldPath, newPath, callback) 異步版本的`rename(2)`。回調函數只有一個可能的異常參數。 #### fs.renameSync(oldPath, newPath) 同步版本的`rename(2)`。返回`undefined`。 #### fs.ftruncate(fd, len, callback) 異步版本的`ftruncate(2)`。回調函數只有一個可能的異常參數。 #### fs.ftruncateSync(fd, len) 同步版本的`ftruncate(2)`。返回`undefined`。 #### fs.truncate(path, len, callback) 異步版本的`truncate(2)`。回調函數只有一個可能的異常參數。第一個參數也可以接受一個文件描述符,這樣的話,`fs.ftruncate()`會被調用。 #### fs.truncateSync(path, len) 同步版本的`truncate(2)`。返回`undefined`。 #### fs.chown(path, uid, gid, callback) 異步版本的`chown(2)`。回調函數只有一個可能的異常參數。 #### fs.chownSync(path, uid, gid) 同步版本的`chown(2)`。返回`undefined`。 #### fs.fchown(fd, uid, gid, callback) 異步版本的`fchown(2)`。回調函數只有一個可能的異常參數。 #### fs.fchownSync(fd, uid, gid) 同步版本的`fchown(2)`。返回`undefined`。 #### fs.lchown(path, uid, gid, callback) 異步版本的`lchown(2)`。回調函數只有一個可能的異常參數。 #### fs.lchownSync(path, uid, gid) 同步版本的`lchown(2)`。返回`undefined`。 #### fs.chmod(path, mode, callback) 異步版本的`chmod(2)`。回調函數只有一個可能的異常參數。 #### fs.chmodSync(path, mode) 同步版本的`chmod(2)`。返回`undefined`。 #### fs.fchmod(fd, mode, callback) 異步版本的`fchmod(2)`。回調函數只有一個可能的異常參數。 #### fs.fchmodSync(fd, mode) 同步版本的`fchmod(2)`。返回`undefined`。 #### fs.lchmod(path, mode, callback) 異步版本的`lchmod(2)`。回調函數只有一個可能的異常參數。 僅在Mac OS X中可用。 #### fs.lchmodSync(path, mode) 同步版本的`lchmod(2)`。返回`undefined`。 #### fs.stat(path, callback) 異步版本的`stat(2)`。回調函數有兩個參數(err, stats),`stats`是一個`fs.Stats`對象。更多信息請參閱`fs.Stats`章節。 #### fs.lstat(path, callback) 異步版本的`lstat(2)`。回調函數有兩個參數(err, stats),`stats`是一個`fs.Stats`對象。`lstat()`與`stat()`是相同的,除了`path`是一個符號鏈接,連接自己本身就是`stat-ed`,而不是引用一個文件。 #### fs.fstat(fd, callback) 異步版本的`fstat(2)`。回調函數有兩個參數(err, stats),`stats`是一個`fs.Stats`對象。`fstat()`與`stat()`是相同的,除了將要被`stat-ed`的文件是通過文件描述符`fd`來指定的。 #### fs.statSync(path) 同步版本的`stat(2)`。返回一個`fs.Stats`實例。 #### fs.lstatSync(path) 同步版本的`lstat(2)`。返回一個`fs.Stats`實例。 #### fs.fstatSync(fd) 同步版本的`fstat(2)`。返回一個`fs.Stats`實例。 #### fs.link(srcpath, dstpath, callback) 異步版本的`link(2)`。回調函數只有一個可能的異常參數。 #### fs.linkSync(srcpath, dstpath) 同步版本的`link(2)`。返回`undefined`。 #### fs.symlink(destination, path[, type], callback) 異步版本的`symlink(2)`。回調函數只有一個可能的異常參數。`type`參數可以被設置為`'dir'`,`'file'`或`'junction'`(默認為`'file'`),并且僅在Windows平臺下可用(其他平臺下會被忽略)。注意Windows `junction`點 要求目標路徑必須是絕對的。當使用`'junction'`時,`destination`參數會被自動轉換為絕對路徑。 #### fs.symlinkSync(destination, path[, type]) 同步版本的`symlink(2)`。返回`undefined`。 #### fs.readlink(path, callback) 異步版本的`link(2)`。回調函數有兩個參數(err, linkString)。 #### fs.readlinkSync(path) 異步版本的`readlink(2)`,返回一個符號鏈接字符串值。 #### fs.realpath(path[, cache], callback) 異步版本的`realpath(2)`。回調函數有兩個參數(err, resolvedPath)。可能會使用`process.cwd`來解析相對路徑。`cache`是一個包含了路徑映射的對象,被用來 強制進行指定的路徑解析 或 避免對真實路徑調用額外的`fs.stat`。 例子: ~~~ var cache = {'/etc':'/private/etc'}; fs.realpath('/etc/passwd', cache, function (err, resolvedPath) { if (err) throw err; console.log(resolvedPath); }); ~~~ #### fs.realpathSync(path[, cache]) 同步版本的`realpath(2)`,返回一個解析出的路徑。 #### fs.unlink(path, callback) 異步版本的`unlink(2)`。回調函數只有一個可能的異常參數。 #### fs.unlinkSync(path) 同步版本的`unlink(2)`。返回`undefined`。 #### fs.rmdir(path, callback) 異步版本的`rmdir(2)`。回調函數只有一個可能的異常參數。 #### fs.rmdirSync(path) 同步版本的`rmdir(2)`。返回`undefined`。 #### fs.mkdir(path[, mode], callback) 異步版本的`mkdir(2)`。回調函數只有一個可能的異常參數。`mode`默認為`0o777`。 #### fs.mkdirSync(path[, mode]) 同步版本的`mkdir(2)`。返回`undefined`。 #### fs.readdir(path, callback) 異步版本的`readdir(3)`。讀取目錄內容。回調函數有兩個參數(err, files),`files`是一個目錄中的文件名數組(不包括`'.'`和`'..'`)。 #### fs.readdirSync(path) 同步版本的`readdir(3)`。返回一個文件名數組(不包括`'.'`和`'..'`)。 #### fs.close(fd, callback) 異步版本的`close(2)`。回調函數只有一個可能的異常參數。 #### fs.closeSync(fd) 同步版本的`close(2)`。返回`undefined`。 #### fs.open(path, flags[, mode], callback) 異步版本的文件打開。參閱`open(2)`。`flag`可以是: - 'r' - 以只讀的方式打開文件。如果文件不存在則拋出異常。 - 'r+' - 以讀寫的方式打開文件。如果文件不存在則拋出異常。 - 'rs' - 同步地以只讀的方式打開文件。繞過操作系統的本地文件系統緩存。 該功能主要用于打開NFS掛載的文件,因為它允許你跳過潛在的過時的本地緩存。它對I/O性能有非常大的影響,所以除非需要它,否則不應使用這個`flag`。 注意這個`flag`不會將`fs.open()`變為一個同步調用。因為如果你想要同步調用,你應使用`fs.openSync()`。 - 'rs+' - 以讀寫的方式打開文件,告訴操作系統同步地打開它。注意事項請參閱`'rs'`。 - 'w' - 以只寫的方式打開文件。如果文件不存在,將會創建它。如果已存在,將會覆蓋它。 - 'wx' - 類似于`'w'`,但是路徑不存在時會失敗。 - 'w+' - 以讀寫的方式打開文件。如果文件不存在,將會創建它。如果已存在,將會覆蓋它。 - 'wx+' - 類似于`'w+'`,但是路徑不存在時會失敗。 - 'a' - 以附加的形式打開文件。如果文件不存在,將會創建它。 - 'ax' - 類似于`'a'`,但是路徑不存在時會失敗。 - 'a+' - 以讀取和附加的形式打開文件。如果文件不存在,將會創建它。 - 'ax+' - 類似于`'a+'`,但是路徑不存在時會失敗。 參數`mode`用于設置文件模式(權限和`sticky bits`),但是前提是文件已被創建。它默認為`0666`,有可讀和可寫權限。 回調函數有兩個參數(err, fd)。 排除標識`'x'`(`open(2)`中的`O_EXCL`標識)保證了目錄是被新創建的。在POSIX系統上,即使路徑指向了一個不存在的符號鏈接,也會被認定為文件存在。排除標識不能保證在網絡文件系統中有效。 在Linux下,無法對以追加形式打開的文件,在指定位置寫入數據。內核忽略了位置參數并且總是將數據追加到文件的末尾。 #### fs.openSync(path, flags[, mode]) 同步版本的`fs.open()`,返回代表文件描述符的一個整數。 #### fs.utimes(path, atime, mtime, callback) 更改`path`所指向的文件的時間戳。 #### fs.utimesSync(path, atime, mtime) 同步版本的`fs.utimes()`。返回`undefined`。 #### fs.futimes(fd, atime, mtime, callback) 更改文件描述符`fd`所指向的文件的時間戳。 #### fs.futimesSync(fd, atime, mtime) 同步版本的`fs.futimes()`。返回`undefined`。 #### fs.fsync(fd, callback) 異步版本的`fsync(2)`。回調函數只有一個可能的異常參數。 #### fs.fsyncSync(fd) 同步版本的`fsync(2)`。返回`undefined`。 #### fs.write(fd, buffer, offset, length[, position], callback) 向文件描述符`fd`指向的文件寫入`buffer`。 `offset`和`length`決定了`buffer`的哪一部分被寫入文件。 `position`指定了文件中,數據被寫入的開始位置的偏移量。如果`typeof position !== 'number'`,那么數據將會在當前位置被寫入。參閱`pwrite(2)`。 回調函數有三個參數(err, written, buffer)。`written`指出了`buffer`中有多少字節被寫入。 注意,不等待回調函數而多次執行`fs.write`是不安全的。這種情況下推薦使用`fs.createWriteStream`。 在Linux下,無法對以追加形式打開的文件,在指定位置寫入數據。內核忽略了位置參數并且總是將數據追加到文件的末尾。 #### fs.write(fd, data[, position[, encoding]], callback) 向文件描述符`fd`指向的文件寫入`data`。如果`data`不是一個`Buffer`實例,那么其值將被強制轉化為一個字符串。 `position`指定了文件中,數據被寫入的開始位置的偏移量。如果`typeof position !== 'number'`,那么數據將會在當前位置被寫入。參閱`pwrite(2)`。 `encoding`是期望的字符串編碼。 回調函數有三個參數(err, written, buffer)。`written`指出了`buffer`中有多少字節被寫入。注意,寫入的字節與字符串字符是不同的。參閱`Buffer.byteLength`。 與寫入`buffer`不同,整個字符串都必須被寫入。不能指定子字符串。因為字節的偏移量可能與字符串的偏移量不相同。 注意,不等待回調函數而多次執行`fs.write`是不安全的。這種情況下推薦使用`fs.createWriteStream`。 在Linux下,無法對以追加形式打開的文件,在指定位置寫入數據。內核忽略了位置參數并且總是將數據追加到文件的末尾。 #### fs.writeSync(fd, buffer, offset, length[, position]) #### fs.writeSync(fd, data[, position[, encoding]]) 同步版本的`fs.write()`。返回被寫入的字節數。 #### fs.read(fd, buffer, offset, length, position, callback) 從文件描述符`fd`指向的文件讀取數據。 `buffer`是數據將要被寫入的緩沖區。 `offset`是開始向`buffer`寫入數據的緩沖區偏移量。 `length`是一個指定了讀取字節數的整數。 `position`是一個指定了從文件的何處開始讀取數據的整數。如果`position`是`null`,數據將會從當前位置開始讀取。 回調函數有三個參數(err, bytesRead, buffer)。 #### fs.readSync(fd, buffer, offset, length, position) 同步版本的`fs.read`。返回讀取字節的個數。 #### fs.readFile(filename[, options], callback) - filename String - **options Object | String** - encoding String | Null 默認為`null` - flag String 默認為`'r'` - callback Function 異步得讀取文件的所有內容。例子: ~~~ fs.readFile('/etc/passwd', function (err, data) { if (err) throw err; console.log(data); }); ~~~ 回調函數有兩個參數(err, data),`data`是文件的內容。 如果沒有指定編碼,那么將會返回源`buffer`。 如果`options`是一個字符串,那么它將指定編碼,例子: ~~~ fs.readFile('/etc/passwd', 'utf8', callback); ~~~ #### fs.readFileSync(filename[, options]) 同步版本的`fs.readFile`。返回文件的內容。 如果指定了編碼那么將會返回字符串。否則返回`buffer`。 #### fs.writeFile(filename, data[, options], callback) - filename String - data String | Buffer - **options Object | String** - encoding String | Null 默認為`'utf8'` - mode Number 默認為`0o666` - flag String 默認為`'w'` - callback Function 異步地向文件寫入數據,如果文件已經存在,那么會覆蓋它。`data`可以是一個字符串或一個`buffer`。 如果數據時一個`buffer`那么編碼會被忽略。編碼默認為`'utf8'`。 例子: ~~~ fs.writeFile('message.txt', 'Hello io.js', function (err) { if (err) throw err; console.log('It\'s saved!'); }); ~~~ 如果`options`是一個字符串,那么它將指定編碼,例子: ~~~ fs.writeFile('message.txt', 'Hello io.js', 'utf8', callback); ~~~ #### fs.writeFileSync(filename, data[, options]) 同步版本的`fs.writeFile`。返回`undefined`。 #### fs.appendFile(filename, data[, options], callback) - filename String - data String | Buffer - **options Object | String** - encoding String | Null 默認為`'utf8'` - mode Number 默認為`0o666` - flag String 默認為`'a'` - callback Function 異步地向文件追加數據,如果文件不存在將會創建它。`data`可以是一個字符串或一個`buffer`。 例子: ~~~ fs.appendFile('message.txt', 'data to append', function (err) { if (err) throw err; console.log('The "data to append" was appended to file!'); }); ~~~ 如果`options`是一個字符串,那么它將指定編碼,例子: ~~~ fs.appendFile('message.txt', 'data to append', 'utf8', callback); ~~~ #### fs.appendFileSync(filename, data[, options]) 同步版本的`fs.appendFile`。返回`undefined`。 #### fs.watchFile(filename[, options], listener) 監視文件變化。回調函數`listener`會在文件每一次被訪問時調用。 第二參數是可選的。如果`options`被提供,那么它必須是一個含有兩個成員`persistent`和`interval`的對象。`persistent`表明了進程是否在文件被監視時繼續執行。`interval`表明了文件被輪詢的間隔(毫秒)。默認是`{ persistent: true, interval: 5007 }`。 `listener`有兩個參數,當前狀態對象和先前狀態對象: ~~~ fs.watchFile('message.text', function (curr, prev) { console.log('the current mtime is: ' + curr.mtime); console.log('the previous mtime was: ' + prev.mtime); }); ~~~ 這兩個狀態對象都是`fs.Stat`實例。 如果你想要在文件被修改時被通知,而不僅僅是在被訪問時,你需要比較`curr.mtime`和`prev.mtime`。 注意:`fs.watch`比`fs.watchFile`和`fs.unwatchFile`更高效。當可能時,請使用`fs.watch`替代它們。 #### fs.unwatchFile(filename[, listener]) 停止監視`filename`的變化。如果指定了`listener`,那么僅僅會移除指定的`listener`。否則所有的監聽器都會被移除,并且停止繼續監視文件。 對一個沒有被監視的文件調用`fs.unwatchFile()`將不會發生任何事,而不是報錯。 注意:`fs.watch`比`fs.watchFile`和`fs.unwatchFile`更高效。當可能時,請使用`fs.watch`替代它們。 #### fs.watch(filename[, options][, listener]) 監視`filename`的變化,`filename`指向的可以是文件也可以是目錄。返回一個`fs.FSWatcher`對象。 第二個參數是可選的。`options`必須是一個對象。支持的布爾值屬性是`persistent`和`recursive`。`persistent`表明了進程是否在文件被監視時繼續執行。`recursive`表明了是否子目錄也需要被監視,或僅僅監視當前目錄。這只在支持的平臺(參閱下方`警告`)下傳遞一個目錄時有效。 默認是`{ persistent: true, recursive: false }`。 `listener`回調函數有兩個參數(event, filename)。`event`是`'rename'`或`'change'`,`filename`是觸發事件的文件名。 ##### 警告 `fs.watch` API 不是在所有平臺下都表現一致的,并且在一些情況下是不可用的。 `recursive`選項目前只支持OS X。只有`FSEvents`支持這種類型的文件監控,所有其他平臺并不會很快都被支持。 ##### 可用性 這個特性依賴于底層操作系統提供的文件變化提示。 - 在Linux系統下,它使用`inotify`。 - 在BSD系統下,它使用`kqueue`。 - 在OS X下,對于文件它使用`kqueue`,對于目錄它使用`FSEvents`。 - 在SunOS系統(包括`Solaris`和`SmartOS`)下,它使用事件端口(event ports)。 - 在Windows系統下,這個特性依賴于`ReadDirectoryChangesW`。 如果由于一些原因,底層功能不可用,那么`fs.watch`的功能也將不可用。例如,在網絡文件系統(NFS,SMB等)中監視文件或目錄變化,往往結果不可靠或完全不可用。 你仍可以使用`fs.watchFile`,它使用了狀態輪詢。但是性能更差且可靠性更低。 ##### Filename 參數 回調函數中提供的`filename`參數不是在所有平臺上都支持的(目前只支持Linux和Windows)。即使是在支持的平臺上,`filename`也不是總會被提供。因此,不要假設`filename`參數總會在回調函數中被提供,需要有一些檢測它是否為`null`的邏輯。 ~~~ fs.watch('somedir', function (event, filename) { console.log('event is: ' + event); if (filename) { console.log('filename provided: ' + filename); } else { console.log('filename not provided'); } }); ~~~ #### fs.exists(path, callback) `fs.exists()`已被棄用。請使用`fs.stat`或`fs.access`替代。 檢查文件系統來測試提供的路徑是否存在。然后在回調函數的參數中提供結果`true`或`false`: ~~~ fs.exists('/etc/passwd', function (exists) { util.debug(exists ? "it's there" : "no passwd!"); }); ~~~ `fs.exists()`是一個不符合潮流的函數,并且僅因一些歷史原因所以仍然錯在。在你的代碼中,不應有任何原因要繼續使用它。 特別的,在打開文件前檢查文件是否存在 是一種反模式。因為競態條件所以讓你的代碼十分脆弱:其他進程可能`fs.exists()`和`fs.open()`之間刪除文件。所以僅僅就去打開一個文件,并且當它不存在時處理錯誤。 #### fs.existsSync(path) 同步版本的`fs.exists`。當文件存在,返回`true`,否則返回`false`。 `fs.existsSync()`已被棄用。請使用`fs.statSync`或`fs.accessSync`替代。 #### fs.access(path[, mode], callback) 對于指定的路徑,檢測用戶的權限。`mode`是一個可選的整數,指定了要被執行的可訪問性檢查。以下是`mode`的一些可用的常量。可以通過“或”運算符(|)連接兩個或以上的值。 - fs.F_OK - 文件對于當前進程可見。這對于檢查文件是否存在很有用,但是不提供任何`rwx`權限信息。這是默認值。 - fs.R_OK - 文件對于當前進程可讀。 - fs.W_OK - 文件對于當前進程可寫。 - fs.X_OK - 文件對于當前進程可執行。這在Windows上無效(將會表現得像`fs.F_OK`一樣)。 最后一個參數`callback`,是一個包含了潛在錯誤參數的回調函數。如果任何一個可訪問檢查失敗了,錯誤參數就會被提供。以下是一個在當前進程中檢查`/etc/passwd`可讀性和可寫性的例子。 ~~~ fs.access('/etc/passwd', fs.R_OK | fs.W_OK, function(err) { util.debug(err ? 'no access!' : 'can read/write'); }); ~~~ #### fs.accessSync(path[, mode]) 同步版本的`fs.access`。如果任何一個可訪問性檢查失敗了,它會拋出異常。否則什么都不做。 #### Class: fs.Stats 由`fs.stat()`,`fs.lstat()`,`fs.lstat()`和它們的同步版本函數所返回的對象。 - stats.isFile() - stats.isDirectory() - stats.isBlockDevice() - stats.isCharacterDevice() - stats.isSymbolicLink() (僅在調用`fs.lstat()`時有效) - stats.isFIFO() - stats.isSocket() 對于一個普通的文件,`util.inspect(stats)`可能會返回: ~~~ { dev: 2114, ino: 48064969, mode: 33188, nlink: 1, uid: 85, gid: 100, rdev: 0, size: 527, blksize: 4096, blocks: 8, 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 } ~~~ 請注意,`atime`,`mtime`,`birthtime`和`ctime`都是`Date`對象實例,并且你可以通過合適的方法來比較它們的值。普遍的使用方式是,調用`getTime()`來獲取unix時間戳并且這個整數可以被用來進行任何比較。但是還有一些可以展示模糊信息的方法。更多的詳細信息請參閱`MDN JavaScript Reference`頁。 #### Stat 時間值 `stat`對象中的各個時間有如下語義: - atime "訪問時間" - 文件數據最后一次被訪問時的時間。由`mknod(2)`,`utimes(2)`和`read(2)`系統調用改變。 - mtime "修改時間" - 文件數據最后一次被修改的時間。由`mknod(2)`,`utimes(2)`和`write(2)`系統調用改變。 - ctime "改變時間" - 文件狀態最后一次被改變(索引節點改變)的時間。由`chmod(2)`,`chown(2)`,`link(2)`,`mknod(2)`,`rename(2)`,`unlink(2)`,`utimes(2)`,`read(2)`和`write(2)`系統調用改變。 - birthtime "創建時間" - 文件的創建時間。在文件被創建時設置。在創建時間不可用的的文件系統上,這個值可能會被`ctime`或是`1970-01-01T00:00Z`(unix時間戳0)填充。在Darwin或其他FreeBSD系統變體上,如果使用`utimes(2)`系統調用設置`atime`為一個比當前`birthtime`更早的時間,`birthtime`也會被這樣填充。 在`io.js` v1.0 和 Node v0.12 前,Windows系統中`ctime`持有了`birthtime`值。但是在 v0.12 里,`ctime`不再是“創建時間”。在Unix系統中,它從來都不是。 #### fs.createReadStream(path[, options]) 返回一個新的可讀流對象(參閱`Readable Stream`)。 `options`是一個有以下默認值的對象或字符串: ~~~ { flags: 'r', encoding: null, fd: null, mode: 0o666, autoClose: true } ~~~ `options`可以包含`start`和`end`值來讀取指定范圍的文件數據。`start`和`end`這兩個位置本身,也都是被包括的,并且`start`以`0`開始。編碼可以是`'utf8'`,`'ascii'`或`'base64'`。 如果指定了`fd`,可讀流將會忽略`path`參數并且將會使用指定的文件描述符。這意味`open`事件不再會觸發。 如果`autoClose`為`false`,那么文件描述符將不會被關閉,甚至是有錯誤發生時。關閉它將是你的責任,并且要確保沒有文件描述符泄漏。如果`autoClose`為`true`(默認),那么在發生錯誤時,或到達文件描述末端時,它會被自動關閉。 從一個100字節的文件中讀取最后10字節數據的例子: ~~~ fs.createReadStream('sample.txt', {start: 90, end: 99}); ~~~ 如果`options`是一個字符串,那么它表示指定的編碼。 #### Class: fs.ReadStream `ReadStream`是一個可讀流。 #### Event: 'open' - fd Integer 被可讀流使用的文件描述符 當可讀流文件被打開時觸發。 #### fs.createWriteStream(path[, options]) 返回一個新的可寫流對象(參閱`Writable Stream`)。 `options`是一個有以下默認值的對象或字符串: ~~~ { flags: 'w', encoding: null, fd: null, mode: 0o666 } ~~~ `options`可以包含一個`start`選項來允許從指定位置開始寫入數據。修改一個文件而不是替換它,需要一個`r+`標識,而不是默認的`w`。編碼可以是`'utf8'`,`'ascii'`,`'binary'`或`'base64'`。 與上文的`ReadStream`類似,如果指定了`fd`,可寫流會忽略`path`參數,并且使用指定的文件描述符。這意味`open`事件不再會觸發。 如果`options`是一個字符串,那么它表示指定的編碼。 #### Class: fs.WriteStream `WriteStream`是一個可寫流。 #### Event: 'open' - fd Integer `WriteStream`使用的文件描述符 當可寫流文件被打開時觸發。 #### file.bytesWritten 至今為止寫入的字節數。不包括仍在寫入隊列中的數據。 #### Class: fs.FSWatcher 由`fs.watch()`返回的對象。 #### watcher.close() 停止在指定的`fs.FSWatcher`上監視文件變化。 #### Event: 'change' - event String 文件的改變類型 - filename String The filename that changed (if relevant/available)被改變的文件(如果有意義/可用的話) 當被監視的目錄或文件發生了改變時觸發。詳情參閱`fs.watch`。 #### Event: 'error' - error Error object 當錯誤發生時觸發。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看