var fs=require('fs');
fs.readFile('./hello.txt',function (err,data) {
if(err)console.log('there is error when reading');
else console.log(data.toString()); //如果没有toString()会输出buffer
});
//等同于以下
var fs=require('fs');
fs.readFile('./hello.txt','utf-8',function (err,data) {
if(err)console.log('there is error when reading');
else console.log(data); //输出this is tested for filereading
});
//console:
//this is tested for filereading
var fs=require('fs');
try{
var data=fs.readFileSync('./hello.txt','utf-8');
console.log(data);
}
catch(err){
console.log('error happened!!')
}
var fs=require('fs');
var data='what are you talking about?'
fs.writeFile('./hello.txt',data,{flag:'a'},function (err) {
if(err)console.log('failed');
else console.log('succeeded');
})
此时option为对象{flag:‘a’},所以执行代码后在相同目录就会寻找一个hello.txt并在文末加入data,否则建立了一个hello.txt的文件在文末加入data。
var fs = require('fs');
fs.readFile('./forjs.jpg','base64',function (err, data) {
fs.writeFile('./newone.jpg', data.toString(), 'base64',function (err) {
if (err) console.log('new photo failed');
else console.log('new photo succeeded');
})
})//我也不知道为什么要用base64编码,反正用就对了
跟writeFile几乎相同,区别在于’option’默认为’a‘.
配合以下使用:
fd跟fs.open所使用的回调函数中返回的文件描述符
buffer为一个Buffer对象,指定将文件数据读取到哪个缓存区
offset用于指定向缓存区中写入数据时的开始写入位置
length指定从文件中读取的字节数
position指定读文件时的开始位置
callback函数:function(err,byteRead,buffer),byteRead代表实际读取的字节数,buffer参数值为被读取的缓存区对象
var fs = require('fs');
fs.open('./hello.txt', 'r+', function (err, file) {
var buf = new Buffer(255);
fs.read(file, buf, 0, 9, 3, function (err, byteread, buffer) {
console.log(buffer.slice(0, byteread).toString());
console.log('hello world');
});
})
callback函数:function(err,written,buffer),byteRead代表被写入的字节数,buffer参数值为被读取的缓存区对象
var fs=require('fs');
fs.open('hello.txt','w',function (err,fd) {
input=new Buffer('我是聪小弟')
fs.write(fd,input,0,15,0,function (err,written,buffer) {
console.log('succeed in writing');
console.log('this is written:'+written);
console.log('this is buffer:'+buffer);
})
})
//
succeed in writing
this is written:15
this is buffer:我是聪小弟
当对文件的读写操作执行完毕后,我们通常需要关闭该文件,尤其是在文件以排他方式被打开的时候。
var fs = require('fs');
fs.open('hello.txt', 'wx', function (err, fd) {
input = new Buffer('我是刘聪')
fs.write(fd, input, 0, 15, 0, function (err, written, buffer) {
console.log('成功');
fs.close(fd,function (err) {
});
})
});
在文件中写入数据的时候,操作系统的做法是首先将该部分数据读到内存中,再把数据写到文件中,当数据读完时并不代表数据已经写完了,因为还有一部分有可能会留在buffer中。这时候如果close关闭文件,部分数据可能会丢失。所以调用fsync方法对文件进行同步操作,将buffer中剩余的数据全部写入文件。
var fs = require('fs');
fs.open('hello.txt', 'wx', function (err, fd) {
input = new Buffer('我是刘聪')
fs.write(fd, input, 0, 15, 0, function (err, written, buffer) {
console.log('成功');
fs.fsync(fd,function (err) {
});
fs.close(fd,function (err) {
});
})
});