最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node的文件系統(tǒng)你了解多少

 更新時(shí)間:2022年02月23日 17:21:20   作者:Han_Zhou_Z  
這篇文章主要為大家詳細(xì)介紹了Node的文件系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、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)會(huì)通知程序處理文件 IO的結(jié)果。

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

"回調(diào)"即"回頭調(diào)用";"回調(diào)函數(shù)"是指函數(shù)定義后并不立即調(diào)用,而是等到某個(gè)事件被觸發(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():用于同步讀取文件,返回一個(gè)字符串。- - - -阻塞方式

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

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

第二個(gè)參數(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ù),有兩個(gè)參數(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)獲取文件信息

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

fs.stat(path, callback)

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

'callback':回調(diào)函數(shù)得到兩個(gè)參數(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': 一個(gè)對象,用于指定編碼格式。默認(rèn)編碼是UTF8。

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

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':表示從文件的某個(gè)位置讀。默認(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':要?jiǎng)?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ù),有兩個(gè)參數(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

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • 防止Node.js中錯(cuò)誤導(dǎo)致進(jìn)程阻塞的辦法

    防止Node.js中錯(cuò)誤導(dǎo)致進(jìn)程阻塞的辦法

    Node.js我們用到非常的多了,如果我們開發(fā)不當(dāng)可能因錯(cuò)誤導(dǎo)致進(jìn)程阻塞問題,對于進(jìn)程阻塞問題一直是個(gè)頭痛的事情,今天我們一起來看一篇關(guān)于Node.js防止錯(cuò)誤導(dǎo)致的進(jìn)程阻塞示例,下面一起來看看。
    2016-08-08
  • 詳解nodejs 文本操作模塊-fs模塊(五)

    詳解nodejs 文本操作模塊-fs模塊(五)

    本篇文章主要介紹了nodejs 文本操作模塊-fs模塊(五),這里再說最后一個(gè)我看來很重要的方法,監(jiān)聽文件或者目錄的的方法watchFile。有興趣的可以了解一下。
    2016-12-12
  • Node.js Streams文件讀寫操作詳解

    Node.js Streams文件讀寫操作詳解

    如果你在處理應(yīng)用中 I/O 相關(guān)的操作,你可以利用 Node.js 中的流(stream),這篇文章主要為大家詳細(xì)介紹了Node.js Streams文件讀寫操作,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 前端常見面試題之a(chǎn)sync/await和promise的區(qū)別

    前端常見面試題之a(chǎn)sync/await和promise的區(qū)別

    async/await是異步代碼的新方式,以前的方法有回調(diào)函數(shù)和Promise,下面這篇文章主要給大家介紹了關(guān)于前端常見面試題之a(chǎn)sync/await和promise區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • nodejs與瀏覽器中全局對象區(qū)別點(diǎn)總結(jié)

    nodejs與瀏覽器中全局對象區(qū)別點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于nodejs與瀏覽器中全局對象區(qū)別點(diǎn)總結(jié)內(nèi)容,對此有需要的朋友們可以學(xué)習(xí)下。
    2021-12-12
  • Nodejs Buffer的使用及Stream流和事件機(jī)制詳解

    Nodejs Buffer的使用及Stream流和事件機(jī)制詳解

    這篇文章主要為大家介紹了Nodejs Buffer的使用及Stream流和事件機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 淺談Node.js 沙箱環(huán)境

    淺談Node.js 沙箱環(huán)境

    本篇文章主要介紹了Node.js 沙箱環(huán)境 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • node結(jié)合swig渲染摸板的方法

    node結(jié)合swig渲染摸板的方法

    本篇文章主要介紹了node結(jié)合swig渲染摸板的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • node.js 全局變量的具體使用

    node.js 全局變量的具體使用

    這篇文章主要介紹了node.js 全局變量的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 使用Node.js實(shí)現(xiàn)HTTP 206內(nèi)容分片的教程

    使用Node.js實(shí)現(xiàn)HTTP 206內(nèi)容分片的教程

    這篇文章主要介紹了使用Node.js實(shí)現(xiàn)HTTP 206內(nèi)容分片的教程,Node.js是一款用于服務(wù)器端的JavaScript框架,需要的朋友可以參考下
    2015-06-06

最新評論

鄱阳县| 新民市| 随州市| 高雄市| 武功县| 阳泉市| 合作市| 江都市| 浙江省| 瓮安县| 莒南县| 察隅县| 顺义区| 建水县| 金沙县| 鸡泽县| 丹寨县| 化德县| 吕梁市| 新绛县| 林芝县| 金沙县| 马边| 元朗区| 新泰市| 平陆县| 蒙自县| 金华市| 铜山县| 桐梓县| 武安市| 郎溪县| 杭州市| 高清| 富锦市| 竹溪县| 武安市| 阳城县| 大同市| 青神县| 屏东市|