亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

詳解nodejs 文本操作模塊-fs模塊(四)

2019-11-19 18:19:01
字體:
來源:轉載
供稿:網友

在前文中,提到了一個概念,就是當我在讀取文件時,我需要知道這個文件的數據量的大小,而在readFile的源碼中,是使用的fa.fstat方法,獲取到了文件的相關數據,而對于使用fstat獲取到的一個對象中,所包含的屬性和方法代表的具體含義,前文中并沒有涉及,本篇就看下,這個State對象中,包含的數據都有哪些,并且他們分別代表的含義是什么。

方法集合

方法集合,不是說的State對象中包含的方法集合,而是說,在調用哪些API時,返回的值時一個State的實例,比如,在fstate就是其中之一。

其他方法集合包括:

  • fs.fstat 
  • fs.lstat 
  • fs.stat 

當然,這里還包括同步的方法,同步的方法,這里就不在執行說明了,對于這三種方法的不同之處在于fstat和stat是用于查看文件的信息的,而lstat是用于查看查看目錄信息的,并且在調用時,也是有差別的

fs.stat(path,callback); //傳入的參數是文件路徑,和回調函數  fs.lstat(path,callback); //傳入的參數是目錄的路徑,和回調函數  fs.fstat(fd,callback); //傳入的參數是文件描述符,和回調函數 //所以,該方法在readFile時,在open打開文件成功之后,才使用。  callback(err,stats){ //回調函數的參數是相同的,第一個參數為錯誤對象,包含錯誤信息 //第二個參數,也就是本篇文章的重點,為一個State對象的實例,包含對應文件的或者目錄的相關信息 } 

State對象的源碼

這里沒有在繼續給實例,是因為,在我看來,這里只是一些屬性和方法的集合,如果需要,直接調用即可,所以沒有什么用法的差異。

先看源碼,在源碼中,注釋每一個屬性的代表含義(該部分源自“Nodejs權威指南”)。

// Static method to set the stats properties on a Stats object. fs.Stats = function(   dev,   mode,   nlink,   uid,   gid,   rdev,   blksize,   ino,   size,   blocks,   atim_msec,   mtim_msec,   ctim_msec,   birthtim_msec) {     this.dev = dev;     //dev為文件或者目錄所在的設備ID,只有在UNIX操作系統下該值有效      this.mode = mode;     //和之前在write時的mode屬性相同,為文件的權限標志,數字形式      this.nlink = nlink;     //文件或目錄的硬連接數,類似于一個文件的別名,使用fs.link創建,使用fs.unlink刪除,     //我這里不太理解這個存在的意義,所以接下來也不會有這個相關的內容      this.uid = uid;     //uid為文件或者目錄的所有者的用戶ID,僅在UNIX操作系統有效      this.gid = gid;     //gid為文件或者目錄所有者所在組的ID,僅在UNIX操作系統有效      this.rdev = rdev;     //字符設備文件或者塊設備文件所在的設備ID,僅在UNIX操作系統有效      this.blksize = blksize;     //沒有在任何地方,看到關于該屬性的描述,源碼中      this.ino = ino;     //文件或者目錄的索引編號,僅在UNIX操作系統下有效      this.size = size;     //文件尺寸,即文件中的字節數      this.blocks = blocks;     //沒有看到相關的介紹      this.atime = new Date(atim_msec);     //文件數據上次被訪問的時間.會被 mknod(2), utimes(2), and read(2) 等系統調用改變。      this.mtime = new Date(mtim_msec);     // 文件上次被修改的時間。 會被 mknod(2), utimes(2), and write(2) 等系統調用改變      this.ctime = new Date(ctim_msec);     //文件狀態上次改變的時間。 (inode data modification).      //會被 chmod(2), chown(2), link(2), mknod(2), rename(2),      //unlink(2), utimes(2), read(2), and write(2) 等系統調用改變。      this.birthtime = new Date(birthtim_msec);     // 文件被創建的時間。 會在文件被創建時生成。 在一些不提供文件birthtime的文件系統中,      //這個字段會被 ctime 或 1970-01-01T00:00Z (ie, unix epoch timestamp 0)來填充  };  //屬于一個判斷各個屬性的方法,其他方法,都是基于調用該方法,獲取得到的返回值。 fs.Stats.prototype._checkModeProperty = function(property) {   return ((this.mode & constants.S_IFMT) === property); };  //用于判斷被查看的對象是否為一個目錄,返回true,false fs.Stats.prototype.isDirectory = function() {   return this._checkModeProperty(constants.S_IFDIR); };  //用于判斷,被查看的對象是否為一個文件,返回true,false,于isDirectory的返回值相反 fs.Stats.prototype.isFile = function() {   return this._checkModeProperty(constants.S_IFREG); };  //用于判斷被查看的文件時否為一個塊設備文件(概念請看源碼之后),返回true,false,只在UNIX操作系統有效 fs.Stats.prototype.isBlockDevice = function() {   return this._checkModeProperty(constants.S_IFBLK); };  //用于判斷被查看的文件,是否為一個字符設備文件,返回true,false,只在UNIX系統下有效 //本以為其值與isBlockDevice返回值相反,但是測試了一下,都是返回的false(MAC系統,操作.js的文件), //可能是有些關系不,暫時不太了解 fs.Stats.prototype.isCharacterDevice = function() {   return this._checkModeProperty(constants.S_IFCHR); };  //被查看的文件是否為一個符號鏈接文件,返回true,false,該方法只在lstat的回調函數中有效。 //如果被查看的文件是符合鏈接文件,那么就認為改符號鏈接是一個目錄,需要使用lstat查看相關的屬性才行。 fs.Stats.prototype.isSymbolicLink = function() {   return this._checkModeProperty(constants.S_IFLNK); };  //查看文件是否為一個FIFO文件,返回true,false,僅在UNIX系統下有效 fs.Stats.prototype.isFIFO = function() {   return this._checkModeProperty(constants.S_IFIFO); };  //判斷一個文件是否為socket文件,返回true,false,僅在UNIX系統下有效。 //話說:有socket文件這種文件?socket文件也可以判斷的? fs.Stats.prototype.isSocket = function() {   return this._checkModeProperty(constants.S_IFSOCK); }; 

在上文中,出現了兩個屬性是沒有找到相關介紹的,這個時候,我就順便查看了下Nodeje的底層C++源碼,找到了一段代碼如下:

# if defined(__POSIX__)   X(blksize) # else   Local<Value> blksize = Undefined(env->isolate()); # endif 

其中__POSIX__應該是一個POSIX的表示,表示是不是支持POSIX標準。

POSIX的百度百科:

POSIX 表示可移植操作系統接口(Portable Operating System Interface ,縮寫為 POSIX ),POSIX標準定義了操作系統應該為應用程序提供的接口標準,是IEEE為要在各種UNIX操作系統上運行的軟件而定義的一系列API標準的總稱,其正式稱呼為IEEE 1003,而國際標準名稱為ISO/IEC 9945。

這樣看來,該屬性也是在UNIX系統下才起作用的,但是具體指代的值,沒有找到,暫時先不管來~~(有點不靠譜了)。

塊設備和字符設備(來自百度百科):

I/O設備大致分為兩類:塊設備和字符設備。塊設備將信息存儲在固定大小的塊中,每個塊都有自己的地址。數據塊的大小通常在512字節到32768字節之間。塊設備的基本特征是每個塊都能獨立于其它塊而讀寫。磁盤是最常見的塊設備。

在大多數的UNIX操作系統中,塊設備只支持以塊為單位的訪問方式,如磁盤等.KYLIN支持以字符方式來訪問塊設備,即支持以字符為單位來讀寫磁盤等塊設備。所以在/dev目錄中的塊設備,如磁盤等,均以字符設備的外觀出現。所以,字符設備和塊設備的區別主要體現在KYLIN內核中的管理方式,操作方式和內核/設備驅動接口上。

總結

基本上,State實例中的屬性和方法,就這些了,對于現狀純理論學習的我來說,這些屬性和方法,大多數都是用不到的,不過,做個了解還是有必要的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91高清视频在线免费观看| 国产精品久久久久7777婷婷| 正在播放欧美视频| 日韩一区二区精品视频| 亚洲天天在线日亚洲洲精| 日本伊人精品一区二区三区介绍| 成人免费看黄网站| 最近2019年中文视频免费在线观看| 欧美视频免费在线观看| 日韩av不卡在线| 精品国产欧美一区二区五十路| 青青草原一区二区| 国产一区二区三区丝袜| 成人国产精品一区| www.xxxx欧美| 欧美精品在线免费观看| 亚洲精品一二区| 亚洲精品日韩在线| 国产精品第8页| 91超碰中文字幕久久精品| 欧美在线视频a| 欧美国产日韩免费| 九九热精品在线| 4444欧美成人kkkk| 国产视频亚洲精品| 最近免费中文字幕视频2019| 精品中文字幕久久久久久| 欧美电影院免费观看| 欧美性xxxx极品hd欧美风情| 一区二区三区视频免费在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 日韩欧美在线播放| 亚洲人成电影网站色| xxxx性欧美| 日本亚洲精品在线观看| 国产精品扒开腿做爽爽爽男男| 国产精品免费久久久久影院| 国产精品一区电影| 日韩精品高清在线| 久久久亚洲精选| 久久国产精品网站| 国产精品96久久久久久| 亚洲女人天堂视频| 精品久久久久久中文字幕一区奶水| 久久久精品免费视频| 欧美老少做受xxxx高潮| 欧美性受xxxx黑人猛交| 亚洲午夜性刺激影院| 日本一区二区三区在线播放| 久久精品国产亚洲一区二区| 丝袜亚洲另类欧美重口| 亚洲天堂av综合网| 国产在线精品自拍| 一本一本久久a久久精品综合小说| 国产91精品不卡视频| 欧美性xxxx极品hd满灌| 亚洲欧美在线播放| 国产在线拍揄自揄视频不卡99| 最近2019年好看中文字幕视频| 日韩不卡中文字幕| 欧美孕妇毛茸茸xxxx| 欧美天天综合色影久久精品| 亚洲v日韩v综合v精品v| 91精品91久久久久久| 成人激情免费在线| 久久男人资源视频| 97精品欧美一区二区三区| 欧美午夜激情小视频| 亚洲一级片在线看| 插插插亚洲综合网| 亚洲精品美女在线观看播放| 亚洲精品不卡在线| 日韩精品在线免费观看视频| 亚洲人成电影网站色| 国产亚洲激情视频在线| 亚洲淫片在线视频| 国产精品99导航| 热99精品里视频精品| 中文字幕在线国产精品| 日韩欧美精品免费在线| 北条麻妃一区二区三区中文字幕| 久久97精品久久久久久久不卡| 亚洲国产精品国自产拍av秋霞| 成人啪啪免费看| 欧美亚洲伦理www| 国产成人av网| 亚洲电影中文字幕| 亚洲桃花岛网站| 欧美一级片久久久久久久| 欧美视频在线免费看| 成人h片在线播放免费网站| 国语自产精品视频在线看抢先版图片| xxxxx91麻豆| 欧美日韩一区二区三区| 亚洲国产精品电影在线观看| 亚洲国产精品视频在线观看| 国产精品视频成人| 国产成人欧美在线观看| 最近2019中文字幕在线高清| 综合网中文字幕| 91理论片午午论夜理片久久| 久久久女女女女999久久| 亚洲色图色老头| 精品国产一区二区三区久久狼5月| 亚洲国产精品久久久久| 久久免费国产视频| 亚洲视频在线观看网站| 国产日韩精品视频| 欧美成人午夜剧场免费观看| 日韩中文字幕亚洲| www高清在线视频日韩欧美| 国产精品色午夜在线观看| 日韩精品高清在线| 精品无人区乱码1区2区3区在线| 国产在线观看不卡| 国产精品美乳在线观看| 尤物精品国产第一福利三区| 日韩欧美在线免费| 疯狂做受xxxx欧美肥白少妇| 国产福利精品在线| 国产欧美日韩中文字幕在线| 色偷偷噜噜噜亚洲男人| 成人午夜在线影院| 久久全球大尺度高清视频| 久久精品国产精品| 亚洲福利视频二区| 精品成人乱色一区二区| 国产精品福利在线观看| 国产精品爽爽ⅴa在线观看| 欧美日韩免费在线观看| 日韩精品在线视频美女| 久久av在线看| 亚洲人成在线观看| 亚洲性69xxxbbb| 91亚洲精品在线观看| 亚洲成人免费在线视频| 日韩美女在线观看一区| 91美女福利视频高清| 成人欧美一区二区三区黑人| 国产成人精品在线观看| 久久伊人精品天天| 国产精品美女久久久久久免费| 国语自产精品视频在线看抢先版图片| 国产区亚洲区欧美区| 色狠狠久久aa北条麻妃| 久久久久久久国产精品视频| 欧美亚州一区二区三区| 欧美高清激情视频| 精品久久久久久久久久久久| 国产香蕉精品视频一区二区三区| 国产成人免费91av在线| 91超碰caoporn97人人| 国产成人精品综合久久久| 久久这里只有精品视频首页| 国产精品久久久av| 色777狠狠综合秋免鲁丝| 538国产精品一区二区免费视频| 国产91网红主播在线观看| 欧美日韩亚洲91| 国产精品丝袜高跟| 久久人人爽人人爽人人片亚洲| 日韩欧美在线网址| 精品国产电影一区| 欧美在线观看网址综合|