在nodeJS中操作檔案系統(二)

龍恩0707發表於2015-05-03

在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);

相關文章