摘要:異步文件系統(tǒng)不會阻塞程序的執(zhí)行,而是在操作完成時,通過回調(diào)函數(shù)將結(jié)果返回。
文件系統(tǒng)(File System):
在Node中,文件系統(tǒng)的交互是非常重要的,服務(wù)器的本質(zhì)就是將本地的文件發(fā)送給客戶端,
Node通過fs模塊來和文件系統(tǒng)進行交互,該模塊提供了一些標(biāo)準(zhǔn)的文件訪問API類打開、讀取、寫入文件、以及與其交互。
要是用fs模塊,首先要從核心模塊中加載; 使用 const fs= require("fs") ; 來引入
fs使用特點:fs模塊中的所有操作都有兩種形式可供選擇同步和異步,
同步文件系統(tǒng)會阻塞程序的執(zhí)行,也就是除非操作完畢,否則不會向下執(zhí)行代碼。
異步文件系統(tǒng)不會阻塞程序的執(zhí)行,而是在操作完成時,通過回調(diào)函數(shù)將結(jié)果返回。
//1. 引入模塊 const fs= require("fs"); // console.log(fs) //2. 打開文件 // fs.open 異步讀取(通常用異步 需設(shè)置回調(diào)函數(shù)) // fs.openSync 同步讀?。ㄗx取時會阻塞線程) let hello = fs.openSync("hello.txt", "w"); // 不存在會自動新建 //3. 寫入內(nèi)容 fs.writeFileSync(hello,"hello word!"); //4. 保存并退出 fs.closeSync(hello);
[](https://github.com/AnsonZnl/S...
文件操作:打開文件:
fs.open(path,flags[,mode],callback)
異步打開 異步都是回調(diào) 回調(diào)嵌套回調(diào)
fs.openSync(path,flags[,mode])
同步打開
文件標(biāo)記(flags):?http://nodejs.cn/api/fs.html#fs_fs_open_path_flags_mode_callback
一、同步打開文件
//1. 引入模塊 let fs = require("fs"); //2.打開文件 同步 var fd=fs.openSync("1.txt", "w"); //3.寫入內(nèi)容 fs.writeFileSync(fd,"hello world!"); //4. 保存并關(guān)閉 fs.closeSync(fd);
二、異步打開文件
//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 關(guān)閉文件 fs.close(fd, (err)=>{ if(!err){ console.log("文件以保存并關(guān)閉") }else{ throw err; } }) }) }else{ throw err; } })
[](https://github.com/AnsonZnl/S...
使用文件流寫入文件流寫入:?http://nodejs.cn/api/fs.html#fs_fs_createwritestream_path_options
//同步操作 //1. 引入模塊 let fs= require("fs"); //2.建立通道 let ws = fs.createWriteStream("fsw.txt") //3.打開通道 ws.once("open", ()=>{ console.log("通道已經(jīng)打開"); }) ws.once("close", ()=>{ console.log("通道已經(jīng)關(guān)閉"); }) //4. 寫入內(nèi)容 ws.write("我愛你,"); ws.write("我愛你,"); ws.write("我愛你,");
[](https://github.com/AnsonZnl/S...
讀寫文件:文檔地址:http://nodejs.cn/api/fs.html#fs_fs_readfile_path_options_callback
讀取文檔:
//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() 方法轉(zhuǎn)換成 }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; } });
[](https://github.com/AnsonZnl/S...
讀取視頻:
//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. 創(chuàng)建管道 re.pipe(ws);//文件流傳輸 console.log("文件流傳輸完成")
參考:詳解NodeJS文件系統(tǒng)fs
我的GitHub總結(jié)的NodeJS筆記
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99102.html
摘要:緩沖模塊起初就是為瀏覽器而設(shè)計的,所以能很好的處理編碼的字符串,但不能很好的處理二進制數(shù)據(jù)。有如下三個主要的流標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸出標(biāo)準(zhǔn)錯誤可讀流如果說,緩沖區(qū)是處理原始數(shù)據(jù)的方式的話,那么流通常是移動數(shù)據(jù)的方式。該方法讓可讀流繼續(xù)觸發(fā)事件。 緩沖(buffer)模塊 js起初就是為瀏覽器而設(shè)計的,所以能很好的處理unicode編碼的字符串,但不能很好的處理二進制數(shù)據(jù)。這是Node.js的...
摘要:方法也可以接收一個參數(shù)表示數(shù)據(jù)請求著請求的數(shù)據(jù)大小,但是可讀流可以根據(jù)需要忽略這個參數(shù)。讀取數(shù)據(jù)大部分情況下我們只要簡單的使用方法將可讀流的數(shù)據(jù)重定向到另外形式的流,但是在某些情況下也許直接從可讀流中讀取數(shù)據(jù)更有用。 介紹本文介紹了使用 node.js streams 開發(fā)程序的基本方法。 We should have some ways of connecting programs ...
摘要:是一款流式構(gòu)建系統(tǒng),如果說是基于任務(wù)執(zhí)行器,就是基于的文件流任務(wù)執(zhí)行器,比起有如下特點使用方便通過代碼優(yōu)于配置的策略,可以讓簡單的任務(wù)簡單,復(fù)雜的任務(wù)更可管理。 作者:Jogis原文鏈接:https://github.com/yesvods/Blog/issues/1轉(zhuǎn)載請注明原文鏈接以及作者信息 showImg(http://itanguo.cn/wp-content/uploads...
摘要:等文件一旦打開,立刻執(zhí)行寫入操作發(fā)射一個緩存區(qū)清空的事件自定義可寫流為了實現(xiàn)可寫流,我們需要使用流模塊中的構(gòu)造函數(shù)。 流的基本概念及理解 流是一種數(shù)據(jù)傳輸手段,是有順序的,有起點和終點,比如你要把數(shù)據(jù)從一個地方傳到另外一個地方流非常重要,gulp,webpack,HTTP里的請求和響應(yīng),http里的socket都是流,包括后面壓縮,加密等流為什么這么好用還這么重要呢? 因為有時候我...
摘要:它們的作用域只在模塊內(nèi),詳見文檔回調(diào)函數(shù)與一樣,如模塊一個大項目一定是分成一個個模塊的,一般來說,一個文件就是一個模塊。這些對象有一個函數(shù),用于將一個或多個函數(shù)綁定到命名事件上。用于注冊監(jiān)聽器,用于觸發(fā)事件。 全局對象 類似的,在瀏覽器中有window全局變量在所有模塊中都可使用。不需要引用等。全局變量如console,setTimeout,require()等 全局變量在所有模塊中都...
閱讀 1241·2021-11-11 16:54
閱讀 1756·2021-10-13 09:40
閱讀 953·2021-10-08 10:05
閱讀 3514·2021-09-22 15:50
閱讀 3718·2021-09-22 15:41
閱讀 1840·2021-09-22 15:08
閱讀 2355·2021-09-07 10:24
閱讀 3584·2019-08-30 12:52