Node之創建與讀取目錄

創建目錄

在fs模塊中,可以使用mkdir方法創建目錄

fs.mkdir(path,[mode],callback
  • path:用於指定需要被創建的目錄的完整路徑及目錄名;
  • mode:用於指定該目錄的權限,默認值爲0777(表示任何人可讀寫該目錄);
  • callback:該回調函數中使用一個參數,參數值爲創建目錄操作失敗時觸發的錯誤對象。

同步創建目錄

fs.mkdirSync(path,[mode])

讀取目錄

在fs模塊中,可以使用readdir方法讀取目錄

fs.readdir(path,callback)
  • path:讀取的文件路徑
  • callback:數用於指定讀取目錄操作完畢時調用的回調函數,在該回調函數中使用兩個參數,其中第一個參數值爲讀取目錄操作失敗時觸發的錯誤對象,第二個參數值爲一個數組,其中存放了讀取到的文件中的所有文件名。

同步讀取

fs.readdirSync(path)

查看文件或目錄的信息

在fs模塊中,可以使用stat方法或lstat方法查看一個文件或目錄的信息。這兩個方法的唯一區別是當查看符號鏈接文件的信息時,必須使用lstat方法。

fs.stat(path, callback)
fs.lstat(path, callback)

  • path:文件路徑
  • callback:在該回調函數中,使用兩個參數,其中err參數值爲查看文件或目錄信息操作失敗時觸發的錯誤對象,stats參數值爲一個fs.Stats對象。該對象擁有如下所示的一些方法,在這些方法中均不使用任何參數。
    • isFile():用於判斷被查看的對象是否爲一個文件,如果是的話則返回true,如果不是的話則返回false
    • isDirectory():用於判斷被查看的對象是否爲一個目錄,如果是的話則返回true,如果不是的話則返回false。
    • isBlockDevice():用於判斷被查看的文件是否爲一個塊設備文件,如果是的話則返回true,如果不是的話則返回false,該方法僅在UNIX操作系統下有效。
    • isCharacterDevice():用於判斷被查看的文件是否爲一個字符設備文件,如果是的話則返回true,如果不是的話則返回false,該方法僅在UNIX操作系統下有效。
    • isSymbolicLink():用於判斷被查看的文件是否爲一個符號鏈接文件,如果是的話則返回true,如果不是的話則返回false,該方法僅在lstat方法的回調函數中有效。
    • isFIFO():用於判斷被查看的文件是否爲一個FIFO文件,如果是的話則返回true,如果不是的話則返回false,該方法僅在UNIX操作系統下有效。
    • ·isSocket():用於判斷被查看的文件是否爲一個socket文件,如果是的話則返回true,如果不是的話則返回false,該方法僅在UNIX操作系統下有效。
    • dev:該屬性值爲文件或目錄所在設備ID,該屬性值僅在UNIX操作系統下有效。
    • ino:該屬性值爲文件或目錄的索引編號,該屬性值僅在UNIX操作系統下有效。
    • mode:該屬性值爲使用數值形式代表的文件或目錄的權限標誌。
    • nlink:該屬性值爲文件或目錄的硬連接數量。
    • uid:該屬性值爲文件或目錄的所有者的用戶ID,該屬性值僅在UNIX操作系統下有效。
    • gid:該屬性值爲文件或目錄的所有者的組ID,該屬性值僅在UNIX操作系統下有效。
    • rdev:該屬性值爲字符設備文件或塊設備文件所在設備ID,該屬性值僅在UNIX操作系統下有效
    • size:該屬性值爲文件尺寸(即文件中的字節數)。
    • atime:該屬性值爲文件的訪問時間。
    • mtime:該屬性值爲文件的修改時間。
    • ctime:該屬性值爲文件的創建時間。
      同步方法
var stats=fs.statSync(path)
var stats=fs.lstatSync(path)

在使用open方法或openSync方法打開文件並返回文件描述符後,可以使用fs模塊中的fstat方法查詢被打開的文件信息

fs.fstat(fd, callback)

同步

fs.fstatSync(fd)

檢查文件或目錄是否存在

在fs模塊中,可以使用exists方法檢查一個文件或目錄是否存在

異步方法:

fs.exists(path, callback)
  • path:文件或者目錄路勁
  • callback:callback參數用於指定檢查文件或目錄信息操作完畢時執行的回調函數。在該回調函數中,使用一個參數,當文件或目錄存在時,該參數值爲true,當文件或目錄不存在時,該參數值爲false。

同步方法:

var exists=fs.existsSync(path)

獲取文件或目錄的絕對路徑

在fs模塊中,可以使用realpath方法獲取一個文件或目錄的絕對路徑。

異步方法:

fs.realpath(path,[cache],callback)
  • path:需要查看的文件或目錄的完整路徑
  • cache:參數值爲一個對象,其中存放了一些預先指定的路徑。
  • callback:數用於指定獲取文件或目錄的絕對路徑操作完畢時執行的回調函數,在回調函數中使用兩個參數,其中err參數值爲獲取文件或目錄的絕對路徑操作失敗時觸發的錯誤對象,resolvedPath參數值爲獲取到的文件或目錄的絕對路徑。

示例:

var cache = {'/etc':'/private/etc'};
fs.realpath('/etc/passwd',cache,function(err,resolvedPath) {
//
回調函數代碼略
});

同步方式:

var resolvedPath=fs.realpathSync(path,[cache]

修改文件訪問時間及修改時間

在fs模塊中,可以使用utimes方法修改文件的訪問時間及修改時間。

fs.utimes(path,atime,mtime,callback)
  • path:用於指定需要被修改時間的文件的完整路徑及文件名
  • atime:用於指定修改後的訪問時間
  • mtime:用於指定修改後的修改時間
  • callback:用於指定修改時間操作完成後執行的回調函數,該回調函數使用一個參數,參數值爲修改文件時間操作失敗時觸發的錯誤對象。

示例:

var fs=require('fs');
fs.utimes('./message.txt',new Date(),new Date(),function(err){
    if(err) console.log("
    修改文件時間操作失敗。");
    console.log("
    修改文件時間操作成功。");
});

同步方式:

fs.utimesSync(path,atime,mtime)

在使用open方法或openSync方法打開文件並返回文件描述符後,可以使用fs模塊中的futimes方法修改文件的訪問時間或修改時間

fs.futimes(fd,atime,mtime,callback)
fs.futimesSync(fd,atime,mtime

修改文件或目錄的讀寫權限

在fs模塊中,可以使用chmod方法修改文件或目錄的讀寫權限

fs.chmod(path, mode, callba
  • path:文件或目錄路徑
  • mode:用於指定修改後的文件或目錄讀寫權限
  • callback:用於指定修改文件讀寫權限操作完成後執行的回調函數,該回調函數使用一個參數,參數值爲修改文件讀寫權限操作失敗時觸發的錯誤對象。

示例:

var fs=require('fs');
// 0600
代表所有者可讀寫,其他人沒有任何權限
fs.chmod('./message1.txt',0600,function(err){
    if(err) console.log("
    修改文件權限操作失敗。");
    else console.log("
    修改文件權限操作成功。");
});

同步方法:

fs.chmodSync(path, mode)

在使用open方法或openSync方法打開文件並返回文件描述符後,可以使用fs模塊中的fchmod方法修改文件的讀寫權限

fs.fchmod(fd,mode,callback)
fs.fchmodSync(fd,mode)

移動文件或目錄

在fs模塊中,可以使用rename方法移動文件或目錄,當移動後的路徑與原路徑爲同一路徑,而移動後的文件名或目錄名與原文件名或目錄名不同時,則執行文件或目錄的重命名操作。

fs.rename(oldPath,newPath,callback)
  • oldPath:用於指定被移動文件或目錄的完整路徑及文件名或目錄名
  • newPath:用於指定移動後該文件或目錄的完整路徑及文件名或目錄名
  • callback:用於指定移動操作執行完畢時調用的回調函數,在該回調函數中使用一個參數,參數值爲移動文件或目錄操作失敗時觸發的錯誤對象。

同步方法:

fs.renameSync(oldPath,newPath)

創建與刪除文件的硬鏈接

在fs模塊中,可以使用link方法創建文件的硬鏈接

fs.link(srcpath,dstpath,callback)
  • srcpath:用於指定需要被創建硬鏈接的文件的完整路徑及文件名
  • dstpath:用於指定被創建的硬鏈接的完整路徑及文件名,該硬鏈接與原文件必須位於同一卷中
  • callback:該回調函數中使用一個參數,參數值爲創建硬鏈接操作失敗時觸發的錯誤對象
    示例:
var fs=require('fs');
fs.link('./message.txt','./test/test.txt',function(err){
    if(err) console.log('
    創建硬鏈接操作失敗。');
    else console.log('
    創建硬鏈接操作成功。');
});

同步方法:

fs.linkSync(srcpath,dstpath)

刪除硬鏈接

在fs模塊中,可以使用unlink方法刪除文件的硬鏈接。

fs.unlink(path,callback)

同步方法:

fs.unlinkSync(path)

創建與查看符號鏈接

在操作系統中,可以爲文件或目錄創建一個或多個符號鏈接。所謂符號鏈接,是一種特殊的文件,這個文件中僅包含了另一個文件或目錄的路徑及文件名或目錄名。如果打開一個文件的符號鏈接文件進行編輯,操作系統將自動打開符號鏈接中所指向的原文件進行編輯,如果打開一個目錄的符號鏈接文件進行文件的創建、編輯或刪除操作,則操作系統將自動打開符號鏈接中所指向的原目錄並執行相應的操作。如果刪除符號鏈接文件,不會刪除原文件或目錄,如果刪除或移動原文件或目錄,符號鏈接文件也不會被刪除,這時產生一種稱爲“斷鏈”的現象。

在fs模塊中,可以使用symlink方法來創建文件或目錄的符號鏈接

fs.symlink(srcpath,dstpath,[type],callback)
  • srcpath:用於指定需要被創建符號鏈接的文件或目錄的完整路徑及文件或目錄名
  • dstpath:用於指定被創建的符號鏈接的完整路徑及文件名
  • type:用於指定爲文件創建符號鏈接還是爲目錄創建符號鏈接,可指定值爲file(爲文件創建符號鏈接)、dir(爲目錄創建符號鏈接,在非Windows操作系統中只能使用dir參數值)以及junction(爲目錄創建符號鏈接,只在Windows操作系統中有效),默認值爲file
  • callback:用於指定創建符號鏈接操作完畢時調用的回調函數,在該回調函數中使用一個參數,
    參數值爲創建符號鏈接操作失敗時觸發的錯誤對象。

同步方法:

fs.symlinkSync(srcpath,dstpath,[type])

讀取符號鏈接中所包含的另一個文件或目錄的路徑及文件名或目錄名

fs.readlink(path,callback)
  • path:用於指定符號鏈接的路徑及文件名
  • callback:用於指定讀取符號鏈接操作完畢時調用的回調函數,在回調函數中使用兩個參數,其中第一個參數值爲讀取符號鏈接操作失敗時觸發的錯誤對象,第二個參數值爲讀取到的一個鏈接字符串,其中包含了另一個文件或目錄的路徑及文件名或目錄名。

同步方法:

var linkString=fs.readlinkSync(path)

截斷文件

在fs模塊中,可以使用truncate方法對文件進行截斷操作(所謂對文件進行截斷操作,是指一種首先清除文件內容,然後修改文件尺寸的操作)

fs.truncate(filename,len,callback)
  • filename:用於指定需要被截斷文件的完整文件路徑及文件名
  • len:用於指定被截斷後的文件尺寸(以字節爲單位)
  • callback:用於指定截斷文件操作完畢時執行的回調函數,該回調函數中使用一個參數,參數值爲截斷文件操作失敗時觸發的錯誤對象

同步方法:

fs.truncateSync(filename,len)

刪除空目錄

在fs模塊中,可以使用rmdir方法刪除空目錄

fs.rmdir(path,callback)
  • path:用於指定需要被刪除目錄的完整路徑及目錄名;
  • callback:數用於指定刪除空目錄操作執行完畢時調用的回調函數,該回調函數使用一個參數,參數值爲刪除目錄操作失敗時觸發的錯誤對象。

同步方法:

fs.rmdirSync(path)

監視文件或目錄

在fs模塊中,可以使用watchFile方法對文件進行監視,並且在監視到文件被修改時執行某些處理

fs.watchFile(filename,[options],listener)
  • filename:用於指定需要被監視的文件的完整路徑及文件名
  • options:
    • persistent:指定當指定了被監視的文件後是否停止當前正在運行的應用程序,該屬性的默認屬性值爲true;
    • interval:指定每隔多少毫秒監視一次文件是否發生改變以及發生了什麼改變。
  • listener:用於指定當被監視的文件發生改變時調用的回調函數
    示例:
var fs=require('fs');
fs.watchFile('./message.txt',function(curr, prev) {
    if(Date.parse(prev.ctime)==0)
    console.log('message.txt文件被創建。');
    else if(Date.parse(curr.ctime)==0)
    console.log('message.txt文件被刪除。');
    else if(Date.parse(prev.mtime)!=Date.parse(curr.mtime))
    console.log('message.txt文件內容被修改。');
});

取消監聽

fs.unwatchFile(filename,[listener])

在fs模塊中,可以使用watch方法對文件或目錄進行監視,並且在監視到文件或目錄被修改時執行某些處理

var watcher=fs.watch(filename,[options],[listener])

與監聽文件參數一樣

watch方法返回一個fs.FSWatcher對象,該對象擁有一個close方法,用於停止對watch方法中指定監視的文件或目錄所執行的監視操作。

watcher.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章