linux下怎么用nodejs写文件

linux下怎么用nodejs写文件,第1张

var fs = require('fs')

var txt = "以上程序使用fs.readFileSync从源路径读取文件内容,并使用fs.writeFileSync将文件内容写入目标路径。"

//写入文件

fs.writeFile('message.txt', txt, function (err) {

if (err) throw err

console.log('It\'s saved!')//文件被保存

})

//读取文件

fs.readFile('message.txt', 'utf8', function (err, data) {

if (err) throw err

console.log(data)

})

nodejs对文件的读写还是相当灵活的,可以根据不同的场景来选择不同的方法。

一.直接 *** 作文件

最简单的两个fs.readFile和fs.writeFile

  举例:这个程序的功能是将一个比较大json格式的文件转换成你想自己要格式的文件。

var fs = require('fs')

fs.readFile('./json.json',function(err,data){

if(err) throw err

var jsonObj = JSON.parse(data)

var space = ' '

var newLine = '\n'

var chunks = []

var length = 0

for(var i=0,size=jsonObj.lengthi<sizei++){

var one = jsonObj[i]

//what value you want

var value1 = one['value1']

var value2 = one['value2']

....

var value = value1 +space+value2+space+.....+newLine

var buffer = new Buffer(value)

chunks.push(buffer)

length += buffer.length

}

var resultBuffer = new Buffer(length)

for(var i=0,size=chunks.length,pos=0i<sizei++){

chunks[i].copy(resultBuffer,pos)

pos += chunks[i].length

}

fs.writeFile('./resut.text',resultBuffer,function(err){

if(err) throw err

console.log('has finished')

})

})

它的原理是将文件数据一次性全部读入内存,优点就是接下来都是在内存的 *** 作,速度会很快。但缺点也很明显,就是当文件非常大时,会造成内存溢出。

二. 使用文件流

2.1 读取文件,api相见:fs.createReadSream 和 fs.createWriterStream

以下代码实现的功能就是通过文件流来实现图片的复制:

var fs = require('fs')

var rOption = {

flags : 'r',

encoding : null,

mode : 0666

}

var wOption = {

flags: 'a',

encoding: null,

mode: 0666

}

var fileReadStream = fs.createReadStream('./myjpg.jpg',rOption)

var fileWriteStream = fs.createWriteStream('./new_myjpg.jpg',wOption)

fileReadStream.on('data',function(data){

fileWriteStream.write(data)

})

fileReadStream.on('end',function(){

console.log('readStream end')

fileWriteStream.end()

})

这里再补充在流中非常有用的一个函数:pipe,它以用来把当前的可读流和另外一个可写流连接起来。可读流中的数据会被自动写入到可写流中。使用起来非常方便,依然实现上例中的功能:

var fs = require('fs')

var fileReadStream = fs.createReadStream('./myjpg.jpg')

var fileWriteStream = fs.createWriteStream('./new_myjpg.jpg')

fileReadStream.pipe(fileWriteStream)

fileWriteStream.on('close',function(){

console.log('copy over')

})

用这个函数可以轻松地实现一个静态资源服务器:

var http = require("http")

var fs = require("fs"),

var path = require("path"),

var url = require("url")

var server = http.createServer(function(req, res) {

var pathname = url.parse(req.url).pathname

console.log(pathname)

var filepath = path.join("./tmp", "wwwroot", pathname)

console.log(filepath)

var stream = fs.createReadStream(filepath, {flags : "r", encoding : null})

stream.on("error", function() {

res.writeHead(404)

res.end()

})

stream.pipe(res)

})

server.on("error", function(error) {

console.log(error)

})

server.listen(8088,function(){

console.log('server listen on 8088')

})

var fs = require('fs')

fs.writeFile("/tmp/test", "Hey there!", function(err) {

    if(err) {

        return console.log(err)

    }

    console.log("The file was saved!")

})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12051250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存