日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Nodejs读写文件

發(fā)布時(shí)間:2024/4/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nodejs读写文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 一.直接操作文件 2 最簡(jiǎn)單的兩個(gè)fs.readFile和fs.writeFile 3   舉例:這個(gè)程序的功能是將一個(gè)比較大json格式的文件轉(zhuǎn)換成你想自己要格式的文件。 4 var fs = require('fs'); 5 fs.readFile('./json.json',function(err,data){ 6 if(err) throw err; 7 8 var jsonObj = JSON.parse(data); 9 var space = ' '; 10 var newLine = '\n'; 11 var chunks = []; 12 var length = 0; 13 14 for(var i=0,size=jsonObj.length;i<size;i++){ 15 var one = jsonObj[i]; 16 //what value you want 17 var value1 = one['value1']; 18 var value2 = one['value2']; 19 .... 20 var value = value1 +space+value2+space+.....+newLine; 21 var buffer = new Buffer(value); 22 chunks.push(buffer); 23 length += buffer.length; 24 } 25 26 var resultBuffer = new Buffer(length); 27 for(var i=0,size=chunks.length,pos=0;i<size;i++){ 28 chunks[i].copy(resultBuffer,pos); 29 pos += chunks[i].length; 30 } 31 32 fs.writeFile('./resut.text',resultBuffer,function(err){ 33 if(err) throw err; 34 console.log('has finished'); 35 }); 36 37 }); 38 它的原理是將文件數(shù)據(jù)一次性全部讀入內(nèi)存,優(yōu)點(diǎn)就是接下來(lái)都是在內(nèi)存的操作,速度會(huì)很快。但缺點(diǎn)也很明顯,就是當(dāng)文件非常大時(shí),會(huì)造成內(nèi)存溢出。 39 二. 使用文件流 40    2.1 讀取文件,api相見:fs.createReadSream 和 fs.createWriterStream 41 以下代碼實(shí)現(xiàn)的功能就是通過(guò)文件流來(lái)實(shí)現(xiàn)圖片的復(fù)制: 42 var fs = require('fs'); 43 var rOption = { 44 flags : 'r', 45 encoding : null, 46 mode : 0666 47 } 48 49 var wOption = { 50 flags: 'a', 51 encoding: null, 52 mode: 0666 53 } 54 55 var fileReadStream = fs.createReadStream('./myjpg.jpg',rOption); 56 var fileWriteStream = fs.createWriteStream('./new_myjpg.jpg',wOption); 57 58 fileReadStream.on('data',function(data){ 59 fileWriteStream.write(data); 60 61 }); 62 63 fileReadStream.on('end',function(){ 64 console.log('readStream end'); 65 fileWriteStream.end(); 66 }); 67 這里再補(bǔ)充在流中非常有用的一個(gè)函數(shù):pipe,它以用來(lái)把當(dāng)前的可讀流和另外一個(gè)可寫流連接起來(lái)。可讀流中的數(shù)據(jù)會(huì)被自動(dòng)寫入到可寫流中。使用起來(lái)非常方便,依然實(shí)現(xiàn)上例中的功能: 68 var fs = require('fs'); 69 70 var fileReadStream = fs.createReadStream('./myjpg.jpg'); 71 var fileWriteStream = fs.createWriteStream('./new_myjpg.jpg'); 72 fileReadStream.pipe(fileWriteStream); 73 74 fileWriteStream.on('close',function(){ 75 console.log('copy over'); 76 }); 77 用這個(gè)函數(shù)可以輕松地實(shí)現(xiàn)一個(gè)靜態(tài)資源服務(wù)器: 78 var http = require("http"); 79 var fs = require("fs"), 80 var path = require("path"), 81 var url = require("url"); 82 83 var server = http.createServer(function(req, res) { 84 var pathname = url.parse(req.url).pathname; 85 console.log(pathname); 86 var filepath = path.join("./tmp", "wwwroot", pathname); 87 console.log(filepath); 88 var stream = fs.createReadStream(filepath, {flags : "r", encoding : null}); 89 stream.on("error", function() { 90 res.writeHead(404); 91 res.end(); 92 }); 93 stream.pipe(res); 94 }); 95 server.on("error", function(error) { 96 console.log(error); 97 }); 98 server.listen(8088,function(){ 99 console.log('server listen on 8088'); 100 });

?

轉(zhuǎn)載于:https://www.cnblogs.com/ference/p/3989165.html

總結(jié)

以上是生活随笔為你收集整理的Nodejs读写文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。