在nodeJS中操作檔案系統(二)
1. 移動檔案或目錄
在fs模組中,可以使用rename方法移動檔案或目錄,使用方法如下:
fs.rename(oldPath,newPath,callback);
在rename方法中,有三個引數,oldPath引數用於指定被移動檔案或目錄的完整路徑,newPath引數用於指定移動後該檔案或目錄的完整路徑,callback引數用於指定移動執行完畢時呼叫的回撥函式,在該回撥函式使用一個引數,引數值為移動後操作失敗時觸發的錯誤物件。
比如如下程式碼:
var fs = require('fs'); var files = fs.rename('./message.txt','./test/test.txt',function(err){ if(err) { console.log("移動檔案操作失敗"); }else { console.log("移動檔案操作成功"); } });
意思是將根目錄的message.txt檔案移動到根目錄下test檔案中並將檔名或者目錄名改為test.txt。但是test資料夾一定是存在的 否則會報錯的。
我們也可以使用同步方式移動檔案或目錄,可以使用renameSync方法,該方法使用如下:
fs.renameSync(oldPath,newPath);
引數的含義和上面的rename方法中的引數含義一樣。
2. 截斷檔案
在fs模組中,可以使用truncate方法對檔案進行截斷操作,該方法使用如下:
fs.truncate(filename,len,callback);
filename:用於指定需要被截斷檔案的完整路徑,len引數值為指定截斷後的檔案尺寸(以位元組為單位),callback引數用於指定截斷檔案操作完畢時執行的回撥函式,該回撥函式中使用一個引數,引數值為截斷檔案操作失敗時觸發的錯誤物件。
如下程式碼是對message.txt檔案進行截斷操作,使檔案尺寸變為10位元組,如下程式碼:
var fs = require('fs'); fs.truncate('./message.txt',10,function(err) { if(err) { console.log("對檔案進行截斷操作失敗"); }else { fs.stat('./message.txt',function(err,stats){ console.log("檔案尺寸為:"+stats.size+" 位元組"); }); } });
截圖如下:
在使用同步方式截斷檔案時,可以使用truncateSync方法,該方法使用如下所示:
fs.truncateSync(filename,len);
引數的含義和如上的一樣。
在使用open或openSync方法開啟檔案並返回檔案描述符後,可以使用fs模組中的ftruncate方法截斷檔案,該方法使用如下所示:
fs.ftruncate(fd,len,callback);
在ftruncate中使用三個引數,其中fd引數值為開啟檔案時返回的檔案描述符,Len引數與callback引數的作用與truncate方法的引數相同。
如下程式碼:
var fs = require('fs'); fs.open('./message.txt','r',function(err,fd){ fs.ftruncate(fd,10,function(){ if(err) { console.log("對檔案進行截斷操作失敗"); }else { fs.stat('./message.txt',function(err,stats){ console.log("檔案尺寸為:"+stats.size+" 位元組"); }); } }); });
執行效果如上一樣;
在使用同步方式截斷檔案時,可以使用ftruncateSync方法,該方法使用如下所示:
fs.ftruncateSync(fd,len);
3. 刪除空目錄
在fs模組中,可以使用rmdir方法刪除空目錄,該方法使用如下:
fs.rmdir(path,callback);
path引數用於指定需要被刪除目錄的完整路徑,callback引數用於指定刪除空目錄操作執行完畢時呼叫的回撥函式,該回撥函式使用一個引數,引數值為刪除目錄操作失敗時觸發的錯誤物件。
如下程式碼:
var fs = require('fs'); fs.rmdir('./test',function(err){ if(err) { console.log("刪除空目錄操作失敗"); }else { console.log("刪除空目錄操作成功"); } });
如上程式碼是刪除根目錄下test空資料夾,記住是空資料夾,如果有子檔案的話,刪除會失敗,否則的話刪除成功。
在使用同步方法刪除空目錄時,可以使用fs模組中的rmdirSync方法,該方法使用如下:
fs.rmdirSync(path);