06、node.js 文件系統(tǒng)

Node.js 提供一組類似 UNIX(POSIX)標準的文件操作API配并。 Node 導(dǎo)入文件系統(tǒng)模塊(fs)語法如下所示:

var fs = require("fs")

01勾缭、異步和同步
Node.js 文件系統(tǒng)(fs 模塊)模塊中的方法均有異步和同步版本,例如讀取文件內(nèi)容的函數(shù)有異步的 fs.readFile() 和同步的 fs.readFileSync()脉课。
異步的方法函數(shù)最后一個參數(shù)為回調(diào)函數(shù)救军,回調(diào)函數(shù)的第一個參數(shù)包含了錯誤信息(error)。
建議大家是用異步方法倘零,比起同步唱遭,異步方法性能更高,速度更快呈驶,而且沒有阻塞拷泽。

input.txt

夜幕小草老師test
文件讀取實例

創(chuàng)建 file.js 文件, 代碼如下:

var fs = require("fs");

// 異步讀取
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("異步讀取: " + data.toString());
});

// 同步讀取
var data = fs.readFileSync('input.txt');
console.log("同步讀取: " + data.toString());

console.log("程序執(zhí)行完畢。");

結(jié)果:

$ node file.js 
同步讀取:夜幕小草老師test
文件讀取實例

程序執(zhí)行完畢袖瞻。
異步讀取:夜幕小草老師test
文件讀取實例

02司致、打開文件

fs.open(path, flags[, mode], callback)

參數(shù)使用說明如下:
path - 文件的路徑。
flags - 文件打開的行為聋迎。具體值詳見下文脂矫。
mode - 設(shè)置文件模式(權(quán)限),文件創(chuàng)建默認權(quán)限為 0666(可讀霉晕,可寫)庭再。
callback - 回調(diào)函數(shù),帶有兩個參數(shù)如:callback(err, fd)牺堰。

Flag    描述
r   以讀取模式打開文件拄轻。如果文件不存在拋出異常。
r+  以讀寫模式打開文件萌焰。如果文件不存在拋出異常哺眯。
rs  以同步的方式讀取文件。
rs+ 以同步的方式讀取和寫入文件扒俯。
w   以寫入模式打開文件,如果文件不存在則創(chuàng)建一疯。
wx  類似 'w'撼玄,但是如果文件路徑存在,則文件寫入失敗墩邀。
w+  以讀寫模式打開文件掌猛,如果文件不存在則創(chuàng)建。
wx+ 類似 'w+', 但是如果文件路徑存在荔茬,則文件讀寫失敗废膘。
a   以追加模式打開文件,如果文件不存在則創(chuàng)建慕蔚。
ax  類似 'a'丐黄, 但是如果文件路徑存在,則文件追加失敗孔飒。
a+  以讀取追加模式打開文件灌闺,如果文件不存在則創(chuàng)建。
ax+ 類似 'a+'坏瞄, 但是如果文件路徑存在桂对,則文件讀取追加失敗。

接下來我們創(chuàng)建 file.js 文件鸠匀,并打開 input.txt 文件進行讀寫蕉斜,代碼如下所示:

var fs = require("fs");

// 異步打開文件
console.log("準備打開文件!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
  console.log("文件打開成功缀棍!");     
});

03宅此、獲取文件信息
以下為通過異步模式獲取文件信息的語法格式:

fs.stat(path, callback)

參數(shù)使用說明如下:
path - 文件路徑。
callback - 回調(diào)函數(shù)睦柴,帶有兩個參數(shù)如:(err, stats), stats 是 fs.Stats 對象诽凌。
fs.stat(path)執(zhí)行后,會將stats類的實例返回給其回調(diào)函數(shù)坦敌÷滤校可以通過stats類中的提供方法判斷文件的相關(guān)屬性。例如判斷是否為文件:

var fs = require('fs');

fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
    console.log(stats.isFile());        //true
})

stats類中的方法有:
方法 描述

stats.isFile()  如果是文件返回 true狱窘,否則返回 false杜顺。
stats.isDirectory() 如果是目錄返回 true,否則返回 false蘸炸。
stats.isBlockDevice()   如果是塊設(shè)備返回 true躬络,否則返回 false。
stats.isCharacterDevice()   如果是字符設(shè)備返回 true搭儒,否則返回 false穷当。
stats.isSymbolicLink()  如果是軟鏈接返回 true,否則返回 false淹禾。
stats.isFIFO()  如果是FIFO馁菜,返回true,否則返回 false铃岔。FIFO是UNIX中的一種特殊類型的命令管道汪疮。
stats.isSocket()    如果是 Socket 返回 true,否則返回 false。

實例
接下來我們創(chuàng)建 file.js 文件智嚷,代碼如下所示:

var fs = require("fs");

console.log("準備打開文件卖丸!");
fs.stat('input.txt', function (err, stats) {
   if (err) {
       return console.error(err);
   }
   console.log(stats);
   console.log("讀取文件信息成功!");
   
   // 檢測文件類型
   console.log("是否為文件(isFile) ? " + stats.isFile());
   console.log("是否為目錄(isDirectory) ? " + stats.isDirectory());    
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
準備打開文件盏道!
{ dev: 16777220,
  mode: 33188,
  nlink: 1,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 40333161,
  size: 61,
  blocks: 8,
  atime: Mon Sep 07 2015 17:43:55 GMT+0800 (CST),
  mtime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST),
  ctime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST) }
讀取文件信息成功稍浆!
是否為文件(isFile) ? true
是否為目錄(isDirectory) ? false

04、寫入文件
語法
以下為異步模式下寫入文件的語法格式:

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

參數(shù)使用說明如下:
file - 文件名或文件描述符摇天。
data - 要寫入文件的數(shù)據(jù)粹湃,可以是 String(字符串) 或 Buffer(流) 對象。
options - 該參數(shù)是一個對象泉坐,包含 {encoding, mode, flag}为鳄。默認編碼為 utf8, 模式為 0666 , flag 為 'w'
callback - 回調(diào)函數(shù)腕让,回調(diào)函數(shù)只包含錯誤信息參數(shù)(err)孤钦,在寫入失敗時返回。
接下來我們創(chuàng)建 file.js 文件纯丸,代碼如下所示:

var fs = require("fs");

console.log("準備寫入文件");
fs.writeFile('input.txt', '我是通過寫入的文件內(nèi)容偏形!',  function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("數(shù)據(jù)寫入成功!");
   console.log("--------我是分割線-------------")
   console.log("讀取寫入的數(shù)據(jù)觉鼻!");
   fs.readFile('input.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("異步讀取文件數(shù)據(jù): " + data.toString());
   });
});

以上代碼執(zhí)行結(jié)果如下:
$ node file.js
準備寫入文件
數(shù)據(jù)寫入成功俊扭!
--------我是分割線-------------
讀取寫入的數(shù)據(jù)!
異步讀取文件數(shù)據(jù): 我是通過寫入的文件內(nèi)容
05坠陈、讀取文件
語法
以下為異步模式下讀取文件的語法格式:

fs.read(fd, buffer, offset, length, position, callback)

參數(shù)使用說明如下:
fd - 通過 fs.open() 方法返回的文件描述符萨惑。
buffer - 數(shù)據(jù)寫入的緩沖區(qū)。
offset - 緩沖區(qū)寫入的寫入偏移量仇矾。
length - 要從文件中讀取的字節(jié)數(shù)庸蔼。
position - 文件讀取的起始位置,如果 position 的值為 null贮匕,則會從當前文件指針的位置讀取姐仅。
callback - 回調(diào)函數(shù),有三個參數(shù)err, bytesRead, buffer刻盐,err 為錯誤信息掏膏, bytesRead 表示讀取的字節(jié)數(shù),buffer 為緩沖區(qū)對象敦锌。
input.txt 文件內(nèi)容為:

夜幕小草老師test

接下來我們創(chuàng)建 file.js 文件壤追,代碼如下所示:

var fs = require("fs");
var buf = new Buffer(1024);

console.log("準備打開已存在的文件!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("文件打開成功供屉!");
   console.log("準備讀取文件:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  字節(jié)被讀取");
      
      // 僅輸出讀取的字節(jié)
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
準備打開已存在的文件!
文件打開成功!
準備讀取文件:
42  字節(jié)被讀取
夜幕小草老師test

05伶丐、關(guān)閉文件
語法
以下為異步模式下關(guān)閉文件的語法格式:

fs.close(fd, callback)

該方法使用了文件描述符來讀取文件悼做。
參數(shù)
參數(shù)使用說明如下:
fd - 通過 fs.open() 方法返回的文件描述符。
callback - 回調(diào)函數(shù)哗魂,沒有參數(shù)肛走。
實例
input.txt 文件內(nèi)容為:

夜幕小草老師test

接下來我們創(chuàng)建 file.js 文件,代碼如下所示:

var fs = require("fs");
var buf = new Buffer(1024);

console.log("準備打開文件录别!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("文件打開成功朽色!");
   console.log("準備讀取文件!");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }

      // 僅輸出讀取的字節(jié)
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }

      // 關(guān)閉文件
      fs.close(fd, function(err){
         if (err){
            console.log(err);
         } 
         console.log("文件關(guān)閉成功");
      });
   });
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
準備打開文件组题!
文件打開成功葫男!
準備讀取文件!
夜幕小草老師test
文件關(guān)閉成功

06崔列、截取文件
語法
以下為異步模式下截取文件的語法格式:

fs.ftruncate(fd, len, callback)

該方法使用了文件描述符來讀取文件梢褐。
參數(shù)使用說明如下:
fd - 通過 fs.open() 方法返回的文件描述符。
len - 文件內(nèi)容截取的長度赵讯。
callback - 回調(diào)函數(shù)盈咳,沒有參數(shù)。
input.txt 文件內(nèi)容為:

www.hcl668.com

接下來我們創(chuàng)建 file.js 文件边翼,代碼如下所示:

var fs = require("fs");
var buf = new Buffer(1024);

console.log("準備打開文件鱼响!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("文件打開成功!");
   console.log("截取10字節(jié)后的文件內(nèi)容组底。");
   
   // 截取文件
   fs.ftruncate(fd, 10, function(err){
      if (err){
         console.log(err);
      } 
      console.log("文件截取成功丈积。");
      console.log("讀取相同的文件"); 
      fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
         if (err){
            console.log(err);
         }

         // 僅輸出讀取的字節(jié)
         if(bytes > 0){
            console.log(buf.slice(0, bytes).toString());
         }

         // 關(guān)閉文件
         fs.close(fd, function(err){
            if (err){
               console.log(err);
            } 
            console.log("文件關(guān)閉成功!");
         });
      });
   });
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
準備打開文件斤寇!
文件打開成功桶癣!
截取10字節(jié)后的文件內(nèi)容。
文件截取成功娘锁。
讀取相同的文件
www.hcl668
文件關(guān)閉成功

07牙寞、刪除文件
語法
以下為刪除文件的語法格式:

fs.unlink(path, callback)

參數(shù)使用說明如下:
path - 文件路徑。
callback - 回調(diào)函數(shù)莫秆,沒有參數(shù)间雀。
實例
input.txt 文件內(nèi)容為:

www.hcl668.com

接下來我們創(chuàng)建 file.js 文件,代碼如下所示:

var fs = require("fs");

console.log("準備刪除文件镊屎!");
fs.unlink('input.txt', function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("文件刪除成功惹挟!");
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
準備刪除文件!
文件刪除成功缝驳!

再去查看 input.txt 文件连锯,發(fā)現(xiàn)已經(jīng)不存在了归苍。
08、創(chuàng)建目錄
語法
以下為創(chuàng)建目錄的語法格式:

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

參數(shù)使用說明如下:
path - 文件路徑运怖。
mode - 設(shè)置目錄權(quán)限拼弃,默認為 0777。
callback - 回調(diào)函數(shù)摇展,沒有參數(shù)吻氧。
接下來我們創(chuàng)建 file.js 文件,代碼如下所示:

var fs = require("fs");

console.log("創(chuàng)建目錄 /tmp/test/");
fs.mkdir("/tmp/test/",function(err){
   if (err) {
       return console.error(err);
   }
   console.log("目錄創(chuàng)建成功咏连。");
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
創(chuàng)建目錄 /tmp/test/
目錄創(chuàng)建成功盯孙。

09、讀取目錄
語法
以下為讀取目錄的語法格式:

fs.readdir(path, callback)

參數(shù)使用說明如下:
path - 文件路徑祟滴。
callback - 回調(diào)函數(shù)振惰,回調(diào)函數(shù)帶有兩個參數(shù)err, files,err 為錯誤信息踱启,files 為 目錄下的文件數(shù)組列表报账。
實例
接下來我們創(chuàng)建 file.js 文件,代碼如下所示:

var fs = require("fs");

console.log("查看 /tmp 目錄");
fs.readdir("/tmp/",function(err, files){
   if (err) {
       return console.error(err);
   }
   files.forEach( function (file){
       console.log( file );
   });
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
查看 /tmp 目錄
input.out
output.out
test
test.txt

10埠偿、刪除目錄
以下為刪除目錄的語法格式:

fs.rmdir(path, callback)

參數(shù)使用說明如下:
path - 文件路徑透罢。
callback - 回調(diào)函數(shù),沒有參數(shù)冠蒋。
接下來我們創(chuàng)建 file.js 文件羽圃,代碼如下所示:

var fs = require("fs");
// 執(zhí)行前創(chuàng)建一個空的 /tmp/test 目錄
console.log("準備刪除目錄 /tmp/test");
fs.rmdir("/tmp/test",function(err){
   if (err) {
       return console.error(err);
   }
   console.log("讀取 /tmp 目錄");
   fs.readdir("/tmp/",function(err, files){
      if (err) {
          return console.error(err);
      }
      files.forEach( function (file){
          console.log( file );
      });
   });
});

以上代碼執(zhí)行結(jié)果如下:

$ node file.js 
準備刪除目錄 /tmp/test
讀取 /tmp 目錄
……

11、文件模塊方法參考手冊
以下為 Node.js 文件模塊相同的方法列表:

序號  方法 & 描述
1   fs.rename(oldPath, newPath, callback)
異步 rename().回調(diào)函數(shù)沒有參數(shù)抖剿,但可能拋出異常朽寞。
2   fs.ftruncate(fd, len, callback)
異步 ftruncate().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常斩郎。
3   fs.ftruncateSync(fd, len)
同步 ftruncate()
4   fs.truncate(path, len, callback)
異步 truncate().回調(diào)函數(shù)沒有參數(shù)脑融,但可能拋出異常。
5   fs.truncateSync(path, len)
同步 truncate()
6   fs.chown(path, uid, gid, callback)
異步 chown().回調(diào)函數(shù)沒有參數(shù)缩宜,但可能拋出異常肘迎。
7   fs.chownSync(path, uid, gid)
同步 chown()
8   fs.fchown(fd, uid, gid, callback)
異步 fchown().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常锻煌。
9   fs.fchownSync(fd, uid, gid)
同步 fchown()
10  fs.lchown(path, uid, gid, callback)
異步 lchown().回調(diào)函數(shù)沒有參數(shù)妓布,但可能拋出異常。
11  fs.lchownSync(path, uid, gid)
同步 lchown()
12  fs.chmod(path, mode, callback)
異步 chmod().回調(diào)函數(shù)沒有參數(shù)宋梧,但可能拋出異常匣沼。
13  fs.chmodSync(path, mode)
同步 chmod().
14  fs.fchmod(fd, mode, callback)
異步 fchmod().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常捂龄。
15  fs.fchmodSync(fd, mode)
同步 fchmod().
16  fs.lchmod(path, mode, callback)
異步 lchmod().回調(diào)函數(shù)沒有參數(shù)释涛,但可能拋出異常加叁。Only available on Mac OS X.
17  fs.lchmodSync(path, mode)
同步 lchmod().
18  fs.stat(path, callback)
異步 stat(). 回調(diào)函數(shù)有兩個參數(shù) err, stats,stats 是 fs.Stats 對象枢贿。
19  fs.lstat(path, callback)
異步 lstat(). 回調(diào)函數(shù)有兩個參數(shù) err, stats殉农,stats 是 fs.Stats 對象。
20  fs.fstat(fd, callback)
異步 fstat(). 回調(diào)函數(shù)有兩個參數(shù) err, stats局荚,stats 是 fs.Stats 對象。
21  fs.statSync(path)
同步 stat(). 返回 fs.Stats 的實例愈污。
22  fs.lstatSync(path)
同步 lstat(). 返回 fs.Stats 的實例耀态。
23  fs.fstatSync(fd)
同步 fstat(). 返回 fs.Stats 的實例。
24  fs.link(srcpath, dstpath, callback)
異步 link().回調(diào)函數(shù)沒有參數(shù)暂雹,但可能拋出異常首装。
25  fs.linkSync(srcpath, dstpath)
同步 link().
26  fs.symlink(srcpath, dstpath[, type], callback)
異步 symlink().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常杭跪。 type 參數(shù)可以設(shè)置為 'dir', 'file', 或 'junction' (默認為 'file') 仙逻。
27  fs.symlinkSync(srcpath, dstpath[, type])
同步 symlink().
28  fs.readlink(path, callback)
異步 readlink(). 回調(diào)函數(shù)有兩個參數(shù) err, linkString。
29  fs.realpath(path[, cache], callback)
異步 realpath(). 回調(diào)函數(shù)有兩個參數(shù) err, resolvedPath涧尿。
30  fs.realpathSync(path[, cache])
同步 realpath()系奉。返回絕對路徑。
31  fs.unlink(path, callback)
異步 unlink().回調(diào)函數(shù)沒有參數(shù)姑廉,但可能拋出異常缺亮。
32  fs.unlinkSync(path)
同步 unlink().
33  fs.rmdir(path, callback)
異步 rmdir().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常桥言。
34  fs.rmdirSync(path)
同步 rmdir().
35  fs.mkdir(path[, mode], callback)
S異步 mkdir(2).回調(diào)函數(shù)沒有參數(shù)萌踱,但可能拋出異常。 mode defaults to 0777.
36  fs.mkdirSync(path[, mode])
同步 mkdir().
37  fs.readdir(path, callback)
異步 readdir(3). 讀取目錄的內(nèi)容号阿。
38  fs.readdirSync(path)
同步 readdir().返回文件數(shù)組列表并鸵。
39  fs.close(fd, callback)
異步 close().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常扔涧。
40  fs.closeSync(fd)
同步 close().
41  fs.open(path, flags[, mode], callback)
異步打開文件园担。
42  fs.openSync(path, flags[, mode])
同步 version of fs.open().
43  fs.utimes(path, atime, mtime, callback)
 
44  fs.utimesSync(path, atime, mtime)
修改文件時間戳,文件通過指定的文件路徑扰柠。
45  fs.futimes(fd, atime, mtime, callback)
 
46  fs.futimesSync(fd, atime, mtime)
修改文件時間戳粉铐,通過文件描述符指定。
47  fs.fsync(fd, callback)
異步 fsync.回調(diào)函數(shù)沒有參數(shù)卤档,但可能拋出異常蝙泼。
48  fs.fsyncSync(fd)
同步 fsync.
49  fs.write(fd, buffer, offset, length[, position], callback)
將緩沖區(qū)內(nèi)容寫入到通過文件描述符指定的文件。
50  fs.write(fd, data[, position[, encoding]], callback)
通過文件描述符 fd 寫入文件內(nèi)容劝枣。
51  fs.writeSync(fd, buffer, offset, length[, position])
同步版的 fs.write()汤踏。
52  fs.writeSync(fd, data[, position[, encoding]])
同步版的 fs.write().
53  fs.read(fd, buffer, offset, length, position, callback)
通過文件描述符 fd 讀取文件內(nèi)容织鲸。
54  fs.readSync(fd, buffer, offset, length, position)
同步版的 fs.read.
55  fs.readFile(filename[, options], callback)
異步讀取文件內(nèi)容。
56  fs.readFileSync(filename[, options])
57  fs.writeFile(filename, data[, options], callback)
異步寫入文件內(nèi)容溪胶。
58  fs.writeFileSync(filename, data[, options])
同步版的 fs.writeFile搂擦。
59  fs.appendFile(filename, data[, options], callback)
異步追加文件內(nèi)容。
60  fs.appendFileSync(filename, data[, options])
The 同步 version of fs.appendFile.
61  fs.watchFile(filename[, options], listener)
查看文件的修改哗脖。
62  fs.unwatchFile(filename[, listener])
停止查看 filename 的修改瀑踢。
63  fs.watch(filename[, options][, listener])
查看 filename 的修改,filename 可以是文件或目錄才避。返回 fs.FSWatcher 對象橱夭。
64  fs.exists(path, callback)
檢測給定的路徑是否存在。
65  fs.existsSync(path)
同步版的 fs.exists.
66  fs.access(path[, mode], callback)
測試指定路徑用戶權(quán)限桑逝。
67  fs.accessSync(path[, mode])
同步版的 fs.access棘劣。
68  fs.createReadStream(path[, options])
返回ReadStream 對象。
69  fs.createWriteStream(path[, options])
返回 WriteStream 對象楞遏。
70  fs.symlink(srcpath, dstpath[, type], callback)
異步 symlink().回調(diào)函數(shù)沒有參數(shù)茬暇,但可能拋出異常。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寡喝,一起剝皮案震驚了整個濱河市糙俗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拘荡,老刑警劉巖臼节,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機墅冷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門疾渣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了扼仲?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抄淑。 經(jīng)常有香客問我屠凶,道長,這世上最難降的妖魔是什么肆资? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任矗愧,我火速辦了婚禮,結(jié)果婚禮上郑原,老公的妹妹穿的比我還像新娘唉韭。我一直安慰自己夜涕,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布属愤。 她就那樣靜靜地躺著女器,像睡著了一般。 火紅的嫁衣襯著肌膚如雪住诸。 梳的紋絲不亂的頭發(fā)上驾胆,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音只壳,去河邊找鬼俏拱。 笑死,一個胖子當著我的面吹牛吼句,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播事格,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惕艳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了驹愚?” 一聲冷哼從身側(cè)響起远搪,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逢捺,沒想到半個月后谁鳍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡劫瞳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年倘潜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片志于。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡涮因,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伺绽,到底是詐尸還是另有隱情养泡,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布奈应,位于F島的核電站澜掩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏杖挣。R本人自食惡果不足惜肩榕,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望程梦。 院中可真熱鬧点把,春花似錦橘荠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褒翰,卻和暖如春贮懈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背优训。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工朵你, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人揣非。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓抡医,卻偏偏與公主長得像,于是被迫代替她去往敵國和親早敬。 傳聞我的和親對象是個殘疾皇子忌傻,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Node.js 常用工具 util 是一個Node.js 核心模塊,提供常用函數(shù)的集合搞监,用于彌補核心JavaScr...
    FTOLsXD閱讀 535評論 0 2
  • topics: 1.The Node.js philosophy 2.The reactor pattern 3....
    宮若石閱讀 1,078評論 0 1
  • 文件系統(tǒng)模塊是一個封裝了標準的 POSIX 文件 I/O 操作的集合水孩。通過require('fs')使用這個模塊。...
    保川閱讀 779評論 0 0
  • Node.js是目前非乘雎浚火熱的技術(shù)俘种,但是它的誕生經(jīng)歷卻很奇特。 眾所周知绝淡,在Netscape設(shè)計出JavaScri...
    w_zhuan閱讀 3,613評論 2 41
  • 異步編程對JavaScript語言太重要宙刘。Javascript語言的執(zhí)行環(huán)境是“單線程”的,如果沒有異步編程够委,根本...
    呼呼哥閱讀 7,311評論 5 22