十三、Node.js-fs模組(上)

林堯彬發表於2020-04-04

Node.js內建的fs模組就是檔案系統模組,負責讀寫檔案以及對檔案進行相關操作。

 

下面直接可參考下面的程式碼進行fs模組裡面基本方法的學習:

/**
 * Created by Administrator on 2019/4/23.
 */
/*注意,下面操作的檔案如果是磁碟其他位置的檔案,路徑可以寫做:
* C:/Users/Administrator/Desktop/新建 DOC 文件.doc
* 如果寫做:C:\Users\Administrator\Desktop\新建 DOC 文件.doc就會報錯
* 具體原因有待研究
* */
/*
 1. fs.stat  檢測是檔案還是目錄
 2. fs.mkdir  建立目錄
 3. fs.writeFile  建立檔案並寫入內容
 4. fs.appendFile 建立檔案並追加內容
 5.fs.readFile 讀取檔案內容
 6.fs.readdir讀取目錄
 7.fs.rename 重新命名
 8. fs.rmdir  刪除目錄
 9. fs.unlink刪除檔案
 */
/*1. fs.stat 檢測是檔案還是目錄*/
var fs=require("fs");
fs.stat('html',function (err,stats) {
    if (err){
        console.log(err);
        return false;
    }
    console.log('檔案:'+stats.isFile());
    console.log('目錄:'+stats.isDirectory());
    /*檔案:false
     目錄:true*/
})
/*2. fs.mkdir 建立目錄*/
//接收引數:
//path            將建立的目錄路徑
//mode          目錄許可權(讀寫許可權),預設0777
//callback      回撥,傳遞異常引數err
fs.mkdir('css',function (err) {//該回撥函式不需要返回資訊,只需要監聽失敗資訊即可
    if (err){
        console.log(err);//例如所建立的資料夾已經存在就會返回錯誤資訊
        return false;
    }else {
        console.log('建立css目錄成功!');
    }
})
//3. fs.writeFile  建立檔案並寫入內容
//如果檔案不存在先建立檔案,如果檔案存在,就會直接寫入內容並覆蓋原來的內容
//filename      (String)            檔名稱
//data        (String | Buffer)    將要寫入的內容,可以使字串 或 buffer資料。
//options        (Object)           option陣列物件,包含:
//· encoding   (string)            可選值,預設 ‘utf8′,當data使buffer時,該值應該為 ignored。
//· mode         (Number)        檔案讀寫許可權,預設值 438
//· flag            (String)            預設值 ‘w'
//callback {Function}  回撥,傳遞一個異常引數err。
fs.writeFile("writeFileTest.java",'這一句是寫入writeFileTest.java這個檔案的內容','utf8',function (err) {
    if (err){
        console.log(err);//
        return false;
    }else {
        console.log('建立檔案並寫入內容成功!');
    }
})
//4. fs.appendFile 追加檔案
//如果檔案不存在先建立檔案,如果檔案存在,就會直接寫入內容並追加到原來的內容之後(可以用來記錄日誌)
fs.appendFile('appendFileTest.txt','這是追加寫入appendFileTest.txt檔案的內容\n',function (err) {
    if (err){
        console.log(err);
    }else {
        '建立檔案並且寫入(追加)內容成功!!!'
    }
})
//5.fs.readFile 讀取檔案
fs.readFile('appendFileTest.txt',function (err,data) {
    if(err){
        console.log(err);
    }else{
        console.log(data);//列印出的是16進位制的內容<Buffer e8 bf 99 e6 98 af e8 bf bd e5 8a a0 e5 86 99 e5 85 a5 61 70 70 65 6e 64 46 69 6c 65 54 65 73 74 2e 74 78 74 e6 96 87 e4 bb b6 e7 9a 84 e5 86 85 e5 ae ... >
        console.log(data.toString());//列印出的是我們正常的文字資訊
    }
})
//6.fs.readdir讀取目錄  把目錄下面的檔案和資料夾都獲取到。
/*
* 注意只讀取該資料夾的子項,不能讀取孫子項
* */
fs.readdir('html',function (err,data) {
    if (err){
        console.log(err);
    }else{
        console.log(data);
        /*[ 'css', 'index.html', 'js' ]*/
    }
})
//7.fs.rename 重新命名
//用例1.改名
fs.rename("html/index1.html","html/index2.html",function (err) {
    if (err){
        console.log(err);//李如指定檔案不存在的情況就會報錯
    }else{
        console.log('改名成功!');
    }
})
//用例2.剪下檔案:把html資料夾下面的index2.html檔案剪下到html/css/資料夾下面
fs.rename("html/index2.html","html/css/index2.html",function (err) {
    if (err){
        console.log(err);//李如指定檔案不存在的情況就會報錯
    }else{
        console.log('改名成功!');
    }
})
//8. fs.rmdir  刪除目錄;不能刪除檔案
/*注意如果目錄不為空會報錯:Error: ENOTEMPTY: directory not empty*/
fs.rmdir("css/t",function (err) {
    if (err){
        console.log(err);//
    }else{
        console.log('刪除資料夾成功!');
    }
})
//9. fs.unlink刪除檔案
fs.unlink("C:/Users/Administrator/Desktop/新建 DOC 文件.doc",function (err) {
    if (err){
        console.log(err);//
    }else{
        console.log('刪除檔案成功!');
    }
})


 

//練習題
//判斷伺服器上某個資料夾是否存在,不存在的話就建立
var fs=require("fs");
fs.stat("D:/NodeTest",function (err) {//檢測D:/下面有沒有NodeTest資料夾
    if (err){//如果不存在就會報錯,然後我們建立一個資料夾
fs.mkdir('D:/NodeTest',function (erroy) {//建立資料夾
    if (erroy){
        console.log(erroy);
    }else{
        console.log('資料夾建立成功了!!!');
    }
})
    }else{//資料夾存在的情況
        console.log('資料夾已經存在的!!');
    }
})

 

轉載於:https://www.cnblogs.com/luzhanshi/p/10757434.html

相關文章