/**
- NodeJS 中,标识位代表着对文件的操作方式,如可读、可写、即可读又可写等等,在下面用一张表来表示文件操作的标识位和其对应的含义。
符号 含义
r 读取文件,如果文件不存在则抛出异常。
r+ 读取并写入文件,如果文件不存在则抛出异常。
rs 读取并写入文件,指示操作系统绕开本地文件系统缓存。
w 写入文件,文件不存在会被创建,存在则清空后写入。
wx 写入文件,排它方式打开。
w+ 读取并写入文件,文件不存在则创建文件,存在则清空后写入。
wx+ 和 w+ 类似,排他方式打开。
a 追加写入,文件不存在则创建文件。
ax 与 a 类似,排他方式打开。
a+ 读取并追加写入,不存在则创建。
ax+ 与 a+ 类似,排他方式打开。
上面表格就是这些标识位的具体字符和含义,但是 flag 是不经常使用的,不容易被记住,所以在下面总结了一个加速记忆的方法。
r:读取
w:写入
s:同步
+:增加相反操作
x:排他方式
r+ 和 w+ 的区别,当文件不存在时, r+ 不会创建文件,而会抛出异常,但 w+ 会创建文件;如果文件存在, r+ 不会自动清空文件,但 w+ 会自动把已有文件的内容清空。
*/
//文件读取
/**
* 文件读取
* 同步:readFileSync
* 第一个参数:读取的路径或文件标识符
* 第二个参数:options,默认为null,其中有编码格式,标识位(默认为r)
* 返回值:文件的内容,如果没有指定编码格式,则默认内容为Buffer
*
* 异步:readFile
* 和同步不同的是第三个参数,由于是异步,所以第三个参数为回调函数,并没有返回值
*/
/*const fileRead = fs.readFileSync("test2.txt", "utf-8");//同步读取
fs.readFile("test2.txt", "utf-8", (err, data) => {
console.log('异步读取', data)
});
console.log('同步读取', fileRead);*/
//文件写入
/**
* 文件写入
* 同步:writeFileSync
* 第一个参数:写入文件的路径或标识符
* 第二个参数:写入的数据,类型为String或Buffer
*
* 异步:writeFile
* 前两个参数和同步写入相同,但最后一个参数为回调,且只有异常返回,没有内容返回
*/
/*fs.writeFileSync("test2.txt", "我是同步写入的小小鸟" + "名字");//同步写入
fs.writeFile("test2.txt", "我是异步写入的小小鸟哈哈哈哈", err => {
fs.readFile("test2.txt", "utf-8", (err, data) => {
console.log('异步读取', data)
});
})*/;//异步写入
//文件追加写入
/**
* 文件追加写入
* 同步:和上一个不同的是 使用fs.appendFileSync追加写入
* 异步:和同步文件追加不同的是第三个参数为回调函数
*/
/*fs.appendFileSync("test2.txt", "我是同步追加进去的小小鸟呵呵呵"+'\n');
console.log('读取同步追加的小小鸟 = ', fs.readFileSync("test2.txt", "utf-8"));
fs.appendFile("test2.txt","我是异步添加进去的小小鸟呦"+'\n',err=>{
console.log('读取异步追加的小小鸟 = ', fs.readFileSync("test2.txt", "utf-8"));
});*/
//文件拷贝写入
/**
* 文件拷贝写入
* 同步:copyFileSync
* 第一个参数:被拷贝的路径或标识符
* 第二个参数:目标路径或目标标识符
*
* 异步:
* 和同步不同的是第三个参数为回调函数
*/
/*fs.copyFileSync("test2.txt", "test2Copy.txt");
console.log(fs.readFileSync("test2Copy.txt", "utf-8"));
fs.copyFile("test2.txt", "test2CopyOptions.txt", err => {
console.log(fs.readFileSync("test2CopyOptions.txt", "utf-8"));
});*/
//文件打开
/**
* 文件打开
* 第一个参数:文件路径或标识符
* 第二个参数:文件的权限操作标识符
* 异步:open
* 同步:openSync
*/
/*fs.open("test2.txt","r",(err,data)=>{
console.log('异步打开文件',data);
});*/
//查看文件目录的操作权限
/**
* 查看文件目录的操作权限
* 如果有操作权限则没有返回值,否则跑出异常
*/
/*try {
fs.accessSync("test2.txt");
console.log('文件可读可写');
} catch (error) {
console.log('文件不可访问');
}*/
//查看文件属性信息
/**
* 获取文件属性信息,如创建时间,修改时间,占用字节等
*
*/
/*console.log(fs.statSync("test2.txt"));*/
参考文章:
参考文章链接