<h2><strong>文件系统(File System):</strong></h2> <ol> <li>在Node中,文件系统的交互是很是重要的,服务器的本质就是将本地的文件发送给客户端,</li> <li>Node经过fs模块来和文件系统进行交互,该模块提供了一些标准的文件访问API类打开、读取、写入文件、以及与其交互。</li> <li>要是用fs模块,首先要从核心模块中加载; 使用 const fs= require('fs') ; 来引入</li> </ol> <h3>fs使用特色:</h3> <ol> <li>fs模块中的全部操做都有两种形式可供选择同步和异步,</li> <li>同步文件系统会阻塞程序的执行,也就是除非操做完毕,不然不会向下执行代码。</li> <li>异步文件系统不会阻塞程序的执行,而是在操做完成时,经过回调函数将结果返回。</li> </ol>html
//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);
<p>[](<a href="https://github.com/AnsonZnl/StudyNodeJS/blob/master/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AF%BE%E6%97%B630-%E8%AF%BE%E6%97%B634%E7%AC%94%E8%AE%B0.md#%E8%AF%BE%E6%97%B631)" rel="nofollow noreferrer">https://github.com/AnsonZnl/S...</a></p> <h3>文件操做:</h3> <ol><li>打开文件:</li></ol> <p><code>fs.open(path,flags[,mode],callback)</code><br> 异步打开 异步都是回调 回调嵌套回调<br><code>fs.openSync(path,flags[,mode])</code><br>同步打开</p> <p>文件标记(flags): <a href="http://nodejs.cn/api/fs.html#fs_fs_open_path_flags_mode_callback" rel="nofollow noreferrer">http://nodejs.cn/api/fs.html#fs_fs_open_path_flags_mode_callback</a></p> <p>1、同步打开文件</p>node
//1\. 引入模块 let fs = require('fs'); //2.打开文件 同步 var fd=fs.openSync('1.txt', 'w'); //3.写入内容 fs.writeFileSync(fd,"hello world!"); //4\. 保存并关闭 fs.closeSync(fd);
<p>2、异步打开文件</p>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; } })
<p>[](<a href="https://github.com/AnsonZnl/StudyNodeJS/blob/master/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AF%BE%E6%97%B630-%E8%AF%BE%E6%97%B634%E7%AC%94%E8%AE%B0.md#%E8%AF%BE%E6%97%B632)" rel="nofollow noreferrer">https://github.com/AnsonZnl/S...</a></p> <h3>使用文件流写入</h3> <p>文件流写入: <a href="http://nodejs.cn/api/fs.html#fs_fs_createwritestream_path_options" rel="nofollow noreferrer">http://nodejs.cn/api/fs.html#fs_fs_createwritestream_path_options</a></p>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('我爱你,');
<p>[](<a href="https://github.com/AnsonZnl/StudyNodeJS/blob/master/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AF%BE%E6%97%B630-%E8%AF%BE%E6%97%B634%E7%AC%94%E8%AE%B0.md#%E8%AF%BE%E6%97%B633)" rel="nofollow noreferrer">https://github.com/AnsonZnl/S...</a></p> <h3>读写文件:</h3> <p>文档地址:<a href="http://nodejs.cn/api/fs.html#fs_fs_readfile_path_options_callback" rel="nofollow noreferrer">http://nodejs.cn/api/fs.html#fs_fs_readfile_path_options_callback</a><br>读取文档:</p>segmentfault
//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; } });
<p>[](<a href="https://github.com/AnsonZnl/StudyNodeJS/blob/master/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AF%BE%E6%97%B630-%E8%AF%BE%E6%97%B634%E7%AC%94%E8%AE%B0.md#%E8%AF%BE%E6%97%B634)" rel="nofollow noreferrer">https://github.com/AnsonZnl/S...</a></p> <p><strong>读取视频:</strong></p>api
//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('文件流传输完成')
<p>参考:<a href="https://www.jb51.net/article/133553.htm" rel="nofollow noreferrer">详解NodeJS文件系统fs</a><br>个人GitHub总结的<a href="https://github.com/AnsonZnl/StudyNodeJS" rel="nofollow noreferrer">NodeJS笔记</a></p>服务器