溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Node的文件系統(tǒng)有哪些內(nèi)容

發(fā)布時(shí)間:2022-02-24 09:12:11 來源:億速云 閱讀:167 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下Node的文件系統(tǒng)有哪些內(nèi)容的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    一、Node的文件系統(tǒng)

    1、FS(FileSystem):實(shí)現(xiàn)對文件的IO操作。fs是Node的模塊,需要導(dǎo)入

    var fs = require('fs');

    2、同步和異步

    (1)同步:程序在涉及到文件IO時(shí),必須等到文件IO操作結(jié)束后再執(zhí)行后續(xù)的操作。

    (2)異步:程序在涉及到文件IO時(shí),不等待文件IO操作結(jié)束,繼續(xù)執(zhí)行后續(xù)的操作,當(dāng)文件IO操作結(jié)束后系統(tǒng)會通知程序處理文件 IO的結(jié)果。

    3、回調(diào)函數(shù)

    "回調(diào)"即"回頭調(diào)用";"回調(diào)函數(shù)"是指函數(shù)定義后并不立即調(diào)用,而是等到某個事件被觸發(fā)時(shí)再調(diào)用。具有異步特性

    4、fs模塊的常用函數(shù)

    (1)讀文件

    A、readFile():用于異步讀取數(shù)據(jù)。  - - - - 非阻塞方式讀

    fs.readFile(fileName, function (err, buffer) {//異步讀取文件
      if (err) throw err;//處理文件的代碼
       process(buffer);
    });

    "filename":文件名(包含路徑)

    "function(err,buffer)":回調(diào)函數(shù),'err'存放的是讀文件失敗的信息;'buffer'存放文件的內(nèi)容

    B、readFileSync():用于同步讀取文件,返回一個字符串。- - - -阻塞方式

    var text = fs.readFileSync(fileName, 'utf8');

    readFileSync(filename,'utf8')//同步讀文件,函數(shù)的返回值是字符串(文件內(nèi)容)

    第二個參數(shù):用來指定字符集,若不指定則函數(shù)返回Buffer;若指定則返回字符串

    //創(chuàng)建input.txt
    山海皆可平
    新年快樂
    //創(chuàng)建read,js
    //1.導(dǎo)入fs模塊
    const fs = require('fs');
    //2.異步讀取
    fs.readFile('input.txt',function (err,buf) {
        if(err){
            return console.error(err)
        }
        console.log("異步讀文件:",buf.toString())
    })
    console.log('2022-1-2')
    //    2022-1-2
    //    異步讀文件: 山海皆可平
    //    新年快樂
    //1.導(dǎo)入fs模塊
    const fs = require('fs');
    //3.同步讀取
    let str = fs.readFileSync('input.txt','utf8');
    console.log("同步讀文件:",str);
    console.log('2022-1-2')
    //    同步讀文件: 山海皆可平
    //    新年快樂
    //    2022-1-2
    (2)打開文件
    fs.open(path, flags[, mode], callback)

    open(path, flags[, mode], callback)

    'path':文件名(包含路徑)

    'flags':打開文件的方式

    'mode':設(shè)置文件模式,但前提是已創(chuàng)建該文件。它默認(rèn)為0666,讀取和寫入

    'callback':這是回調(diào)函數(shù),有兩個參數(shù)(err, fd)

    --'r':以只讀方式打開文件,若文件不存在則報(bào)異常

    --'w':為寫打開文件,若文件則創(chuàng)建文件

    --'a':向文件中追加內(nèi)容,若文件則創(chuàng)建文件

    --'rs':同步方式打開文件

    //1.導(dǎo)入fs模塊
    const fs = require('fs');
    fs.open('input.txt','r+',function (err,fd) {
        if(err){
            return console.error(err)
        }
        console.log("fd:",fd);
        console.log('打開文件成功!');
    })
    //    fd: 3
    //    打開文件成功!
    (3)獲取文件信息

    是一個對象,包含文件或目錄(文件夾)的具體信息。通過該對象可以判斷當(dāng)前處理的是對象還是目錄

    fs.stat(path, callback)

    'path': 文件名,包括路徑字符串。

    'callback':回調(diào)函數(shù)得到兩個參數(shù)(err, stats)

    //1.導(dǎo)入fs模塊
    const fs = require('fs');
    fs.stat('text',function (err,stats) {
        if (err){
            return console.error(err)
        }
        console.log("文件狀態(tài):",stats);
        //檢查
        console.log("isFile? ----",stats.isFile()) //判斷對象是否是文件
        console.log("isDirectory?----",stats.isDirectory())//判斷對象是否是目錄
    })
    // 文件狀態(tài): Stats {
    //     dev: 3959906401,
    //         mode: 16822,
    //         nlink: 1,
    //         uid: 0,
    //         gid: 0,
    //         rdev: 0,
    //         blksize: 4096,
    //         ino: 27584547718321690,
    //         size: 0,
    //         blocks: 0,
    //         atimeMs: 1645523918307.2014,
    //         mtimeMs: 1645523918307.2014,
    //         ctimeMs: 1645523918307.2014,
    //         birthtimeMs: 1645523918307.2014,
    //         atime: 2022-02-22T09:58:38.307Z,
    //         mtime: 2022-02-22T09:58:38.307Z,
    //         ctime: 2022-02-22T09:58:38.307Z,
    //         birthtime: 2022-02-22T09:58:38.307Z
    // }
    // isFile? ---- false
    //     isDirectory?---- true
    (4)寫入文件
    fs.writeFile(filename, data[, options], callback)

    A、writeFile  --- 異步寫入文件

    'filename' : 文件名,包括路徑字符串

    'data':字符串或緩沖區(qū)將被寫入到文件中

    'options': 一個對象,用于指定編碼格式。默認(rèn)編碼是UTF8。

    'callback': 回調(diào)函數(shù)獲取一個參數(shù)err,用于在發(fā)生任何寫入錯誤時(shí)返回錯誤。

    const  fs = require('fs');
    //1.向input.txt中寫入內(nèi)容
    fs.writeFile('input.txt','云與海',function (err) {
        if(err){
            return console.error(err)
        }
        console.log('寫入文件成功!');
    })

    B、writeFileSync(fileName, data, 'utf8'); //同步寫

    fs.writeFileSync(fileName, str, 'utf8');
    (5)讀取文件(以二進(jìn)制方式讀)
    fs.read(fd, buffer, offset, length, position, callback)

    'fd':是文件的描述符,由open函數(shù)返回

    'buffer':緩沖區(qū)。存放從二進(jìn)制文件讀取的內(nèi)容

    'offset':偏移量。寫入緩沖區(qū)的位置

    'length':讀取的字節(jié)數(shù)

    'position':表示從文件的某個位置讀。默認(rèn)從當(dāng)前位置開始

    'callback':回調(diào)函數(shù)

    const  fs = require('fs');
    //讀取二進(jìn)制文件
    var buf = new Buffer(1024);
    fs.open('input.txt','r+',function (err,fd) {
        if(err){
            return console.error(err)
        }
        console.log('打開文件成功!')
        fs.read(fd,buf,0,buf.length,0,function (err,bytes) {
            if (err){
                return console.error(err);
            }
            if(bytes > 0){
                let str = buf.slice(0,bytes).toString();
                console.log("讀取的內(nèi)容是:",str);
            }
        })
        console.log('----End----');
    })
    //     打開文件成功!
    //     ----End----
    //     讀取的內(nèi)容是: 離離原上草,一歲一枯榮
    (6)關(guān)閉文件
    close(fd, callback)
    const  fs = require('fs');
    //讀取二進(jìn)制文件
    var buf = new Buffer(1024);
    fs.open('input.txt','r+',function (err,fd) {
        if(err){
            return console.error(err)
        }
        console.log('打開文件成功!')
        fs.read(fd,buf,0,buf.length,0,function (err,bytes) {
            if (err){
                return console.error(err);
            }
            if(bytes > 0){
                let str = buf.slice(0,bytes).toString();
                console.log("讀取的內(nèi)容是:",str);
            }
        })
        fs.close(fd,function (err) {
            if (err){
                return console.error(err)
            }
            console.log('文件關(guān)閉成功!')
        })
        console.log('----End----');
    })
    //     打開文件成功!
    //     ----End----
    //     讀取的內(nèi)容是: 離離原上草,一歲一枯榮
    //     文件關(guān)閉成功!
    (7)創(chuàng)建目錄(文件夾)
    mkdir(path[, mode], callback)

    'path':要創(chuàng)建的包括路徑的目錄名

    'mode':目錄的權(quán)限,默認(rèn)是可讀可寫

    callback':回調(diào)函數(shù)

    const  fs = require('fs');
    fs.mkdir('./yunxi',function (err) {
        if (err){
            return console.error(err)
        }
        console.log('創(chuàng)建目錄成功!')
    })
    (8)刪除目錄
    rmdir(path, callback)
    const  fs = require('fs');
    fs.rmdir('./text',function (err) {
        if (err){
            return console.error(err)
        }
        console.log('刪除成功!')
    })
    (9)讀取目錄
    readdir(path, callback)

    'path':目錄名

    'callback':回調(diào)函數(shù),有兩個參數(shù)(err,files),'files'是列表,當(dāng)中放的是當(dāng)前目錄下的文件或文件夾名稱

    onst  fs = require('fs');
    fs.readdir('./yunxi',function (err,files) {
        if (err){
            return console.error(err)
        }
        files.forEach(function (file) {
            console.log(file)
        })
    })
    //    demo.css
    //    exam.ts
    //    zhou
    (10)文件拷貝

    copyFile(源文件,目標(biāo)文件,回調(diào)函數(shù))

    const  fs = require('fs');
    fs.copyFile('./input.txt','./target.txt',function (err) {
        if (err){
            return console.error(err)
        }
        console.log('文件拷貝成功!')
    })
    //target文件中拷貝了input文件里的內(nèi)容
    (11)給文件中追加內(nèi)容
    appendFile(filename,content,callback)

    'content':追加的內(nèi)容

    const  fs = require('fs');
    let content = "\n野火燒不盡,\n春風(fēng)吹又生";
    fs.appendFile('./input.txt',content,function (err){
        if (err){
            return console.error(err)
        }
        console.log('追加內(nèi)容成功!');
    })
    //input文件中的內(nèi)容是:離離原上草,一歲一枯榮。野火燒不盡,春風(fēng)吹又生。
    (12)刪除文件
    unlink(path, callback)

    'path':帶路徑的文件名

    allback':回調(diào)函數(shù),沒有參數(shù)

    const  fs = require('fs');
    fs.unlink('./target.txt',function (err) {
        if (err){
            return console.error(err)
        }
        console.log('刪除文件成功!')
    })
    (13)文件重命名
    rename(oldPath, newPath, callback)

    'oldPath':原文件名

    'newPath':新文件名

    'callback':回調(diào)函數(shù)

    const  fs = require('fs');
    fs.rename('./input.txt','./yunxi.txt',function (err){
        if (err){
            return console.error(err)
        }
        console.log('重命名成功!')
    })
    //將input文件重命名為yunxi

    以上就是“Node的文件系統(tǒng)有哪些內(nèi)容”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI