nodeJs文件系統(fs)與流(stream)

文件系統(File System):

  1. 在Node中,文件系統的交互是很是重要的,服務器的本質就是將本地的文件發送給客戶端,
  2. Node經過fs模塊來和文件系統進行交互,該模塊提供了一些標準的文件訪問API類打開、讀取、寫入文件、以及與其交互。
  3. 要是用fs模塊,首先要從核心模塊中加載; 使用 const fs= require('fs') ; 來引入

fs使用特色:

  1. fs模塊中的全部操做都有兩種形式可供選擇同步和異步,
  2. 同步文件系統會阻塞程序的執行,也就是除非操做完畢,不然不會向下執行代碼。
  3. 異步文件系統不會阻塞程序的執行,而是在操做完成時,經過回調函數將結果返回。
//1\. 引入模塊
const fs= require("fs");
// console.log(fs)

//2\. 打開文件
// fs.open 異步讀取(一般用異步 需設置回調函數)  
// fs.openSync 同步讀取(讀取時會阻塞線程)

let hello = fs.openSync("hello.txt", "w");
//                     不存在會自動新建

//3\. 寫入內容
fs.writeFileSync(hello,'hello word!');

//4\. 保存並退出
fs.closeSync(hello);

複製代碼

文件操做:

  1. 打開文件: fs.open(path,flags[,mode],callback) 異步打開 異步都是回調 回調嵌套回調 fs.openSync(path,flags[,mode]) 同步打開

文件標記(flags): nodejs.cn/api/fs.html…html

1、同步打開文件node

//1\. 引入模塊 
    let fs = require('fs');

    //2.打開文件 同步
    var fd=fs.openSync('1.txt', 'w');

    //3.寫入內容
    fs.writeFileSync(fd,"hello world!"); 

    //4\. 保存並關閉
    fs.closeSync(fd);
複製代碼

2、異步打開文件git

//1.引入模塊
   let fs = require('fs');

   //2\. 打開文件
   fs.open('1.txt', 'a', (err, fd)=>{
       //2.1判斷是否出錯
       if(!err){
           //正確 2.2寫入文件
           fs.writeFile(fd, "今每天.....氣真好!", (err)=>{
                //2.2.1 寫入成功
                if(!err){
                    console.log('寫入成功');
                }else{
                    throw err;
                }
                //2.3 關閉文件
                fs.close(fd, (err)=>{
                    if(!err){
                        console.log('文件以保存並關閉')
                    }else{
                        throw err;
                    }
                })
           })
       }else{
           throw err;
       }
   })

複製代碼

使用文件流寫入

文件流寫入: nodejs.cn/api/fs.html…github

//同步操做

//1\. 引入模塊
let fs= require('fs');

//2.創建通道
let ws = fs.createWriteStream('fsw.txt')

//3.打開通道
ws.once('open', ()=>{
    console.log('通道已經打開');
})

ws.once('close', ()=>{
    console.log('通道已經關閉');
})

//4\. 寫入內容
ws.write('我愛你,');
ws.write('我愛你,');
ws.write('我愛你,');

複製代碼

讀寫文件:

文檔地址:nodejs.cn/api/fs.html… 讀取文檔:api

//1\. 引入模塊
let fs = require('fs');

//2\. 讀取文件
fs.readFile('source/hello.txt','utf8',(err,data)=>{
    //判斷是否成功
    if(!err){
        console.log(data);//
        // console.log(data.toString());
        //data 默認讀取的是二進制 使用toString() 方法轉換成
    }else{
        throw err;
    }
})

讀取圖片:

//3\. 讀取圖片
fs.readFile("source/psb.jpg",(err,data)=>{
    //判斷是否成功
    if(!err){
        //寫入圖片
        fs.writeFile('img.jpg', data, (err)=>{
            if(!err){
                console.log('寫入成功!')
            }else{
                throw err;
            }
        })
    }else{
        throw err;
    }
});

複製代碼

讀取視頻:bash

//1\. 引入模塊
let fs= require('fs');

//2\. 讀取視頻
fs.readFile('source/cddbb.mp4', (err, data)=>{
    if(!err){
        // 寫入視頻
        fs.writeFile('nmx.mp4', data, (err)=>{
            if(!err){
                console.log('寫入成功!');
            }else{
                throw err;
            }
        })
    }else{
        throw err;
    }
})

//3\. 流式文件的讀入(批量文件處理)
let re= fs.createReadStream('source/cddbb.mp4');
//創建讀取流
let ws= fs.createWriteStream('新建的視頻.mp4');
//創建寫入流

//4\. 建立管道
re.pipe(ws);//文件流傳輸
console.log('文件流傳輸完成')
複製代碼

參考:詳解NodeJS文件系統fs 個人GitHub總結的NodeJS筆記服務器

相關文章
相關標籤/搜索