之前的笔记 就不一一去列出来了
因为自己用到的东西不多 也不清楚哪个是常用的 下面就随便列列吧
- buffer
我们在使用Node.js做服务端开发时,http、tcp、udp、文件io等等类型的操作,都会用到Buffer
Buffer代表一个缓冲区,存储二进制数据,是字节流。我们在网络传输时,就传输的这种字节流。写文件时,也是写的字节流。
API
- fs 模块
在Node.js中,使用fs模块来实现所有有关文件及目录的创建,写入及删除操作。在fs模块中,多有文件及目录的操作都可以使用同步或异步这两种方法,即readFile 和readFileSync,有Sync后缀的方法为同步方法,不具有Sync后缀的方法均为异步方法。
- readFile readFileSync
fs.readFile(filename,[options],function(err,data){ })
- 第一个参数filename:表示要读取文件的路径和名称
- 第二个参数option:指定使用哪种编码格式来读取该文件,可指定的属性值为‘utf-8’,‘ascii’,‘base64’,
- 第三个参数callback:表示文件服务完毕后执行的回调函数,回调函数的第一个参数err,为读取文件操作失败时触发的错误对象,第二个参数data,表示读取文件成功后读取到的文件内容。
var fs = require('fs');
var data = fs.readFile('./index.txt', 'utf-8', function(err,data){
// 操作结果作为回调函数的第二个参数返回
if (err) {
console.log('读取文件发生错误')
}else {
console.log(data);
}
});
- writeFile writeFileSync
fs.writeFile(path, data, [options], function(err){ });
var fs = require('fs');
fs.writeFile('./message.txt','这是写入的数据',function(err){
if(err){
console.log('写文件操作失败。')
}else {
console.log('写文件操作成功。')
}
})
如果message文件不存在 则会创建message.txt
如果message文件存在 则写入的数据覆盖原本内容
用readFile实现复制图片
var fs = require('fs');
fs.readFile('./a.jpg', 'base64', function(err,data){
fs.writeFile('./b.jpg',data.toString(),'base64',function(err){
if(err){
console.log('写文件操作失败')
}else {
console.log('写文件操作成功')
}
})
});
- appendFile appendFileSync
fs.appendFile(path, data, options, callback)
var fs = require('fs');
fs.appendFile('./message.txt', '这是追加的数据', 'utf-8', function(err){
if(err){
console.log('追加文件失败')
}else {
console.log('追加文件成功')
}
});
- open openSync
fs.open(path, flags[, mode], callback)
path - 文件的路径。
flags - 文件打开的行为。
mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
callback - 回调函数,带有两个参数如:callback(err, fd)。
flags 参数
r 以读取模式打开文件
r+ 以读写模式打开文件
rs 以同步的方式读取文件
rs+ 以同步的方式读写文件
var fs = require('fs')
fs.open('message.txt', 'r+', function (err, fd) {
if (err) return err;
console.log(fd);
console.log('文件打开成功');
});
- read
fs.read(fd, buffer, offset, length, position, callback)
fd - 通过 fs.open() 方法返回的文件描述符。
buffer - 数据写入的缓冲区。
offset - 缓冲区写入的写入偏移量。
length - 要从文件中读取的字节数。
position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。
var fs = require("fs");
var buf = new Buffer(1024);
console.log("准备打开已存在的文件!");
fs.open('message.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("文件打开成功!");
console.log("准备读取文件:");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + " 字节被读取");
// 仅输出读取的字节
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
});
- write writeSync
fs.write(fd,buffer,offset,length,position,function(err,written,buffer){})
var fs = require('fs')
var buf = new Buffer('心心心输送机');
fs.open('./message.txt','w', function(err,fd){
fs.write(fd,buf,3,9,0,function(err,written,buffer){
if(err){
console.log('文件写入失败')
}else{
console.log('写入文件成功')
}
})
})
"心心输" 三个字被写入
在写入文件后,我们经常要关闭文件 fs.close(fd,[callback])
- mkdir mkdirSync 创建目录
fs.mkdir(path[, mode], callback)
var fs = require("fs");
console.log("创建目录 test");
fs.mkdir("test",function(err){
if (err) {
return console.error(err);
}
console.log("目录创建成功。");
});
- readdir readdirSync 读取目录
fs.readdir(path,function(err,files){})
var fs = require('fs')
fs.readdir('./',function(err,files){
if(err){
console.log('读取目录失败')
}else{
console.log(files)
}
})
- stat 获取文件信息
fs.stat(path, callback)
var fs = require('fs');
fs.stat('message.txt',function(err,stats){
if(err){
return err;
}
console.log(stats);
console.log("读取文件信息成功");
//检测文件类型
console.log('是否为文件(isFile) ? ' + stats.isFile());
console.log('是否为目录(isDirectory) ? ' + stats.isDirectory());
});
- exists 判断文件目录是否存在
fs.exists(path, callback)
var fs = require('fs');
fs.exists('./test', function (exists) {
if (exists) {
console.log('路径存在');
}
});
太累了 不写了 具体需要的api自己查吧 等用到时再更新
个人学习 node 目录地址