node给到我们新的特性,就是操作文件。在浏览器目前是不行的。但是操作文件分为两种,一种是同步,一种是异步。

读取文件

  1. var fs = require("fs");
  2. // 异步读取
  3. fs.readFile('input.txt', function (err, data) {
  4. if (err) {
  5. return console.error(err);
  6. }
  7. console.log("异步读取: " + data.toString());
  8. });
  9. // 同步读取
  10. var data = fs.readFileSync('input.txt');
  11. console.log("同步读取: " + data.toString());
  12. console.log("程序执行完毕。");

打开文件

  1. var fs = require("fs");
  2. fs.open('input.txt', 'r+' function(){});

路径,模式,回调。简单明了。
但是模式这个分很多种了:

Flag 描述
r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 ‘w’,但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 ‘w+’, 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 ‘a’, 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。

获取文件信息

  1. var fs = require("fs");
  2. console.log("准备打开文件!");
  3. fs.stat('input.txt', function (err, stats) {
  4. if (err) {
  5. return console.error(err);
  6. }
  7. console.log(stats);
  8. console.log("读取文件信息成功!");
  9. // 检测文件类型
  10. console.log("是否为文件(isFile) ? " + stats.isFile());
  11. console.log("是否为目录(isDirectory) ? " + stats.isDirectory());
  12. });

回调函数第二个参数stats的方法。

方法 描述
stats.isFile() 如果是文件返回 true,否则返回 false。
stats.isDirectory() 如果是目录返回 true,否则返回 false。
stats.isBlockDevice() 如果是块设备返回 true,否则返回 false。
stats.isCharacterDevice() 如果是字符设备返回 true,否则返回 false。
stats.isSymbolicLink() 如果是软链接返回 true,否则返回 false。
stats.isFIFO() 如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
stats.isSocket() 如果是 Socket 返回 true,否则返回 false。

写入文件

  1. var fs = require("fs");
  2. console.log("准备写入文件");
  3. fs.writeFile('input.txt', '我是通 过fs.writeFile 写入文件的内容', function(err) {
  4. if (err) {
  5. return console.error(err);
  6. }
  7. console.log("数据写入成功!");
  8. console.log("--------我是分割线-------------")
  9. console.log("读取写入的数据!");
  10. fs.readFile('input.txt', function (err, data) {
  11. if (err) {
  12. return console.error(err);
  13. }
  14. console.log("异步读取文件数据: " + data.toString());
  15. });
  16. });

关闭文件

  1. var fs = require("fs");
  2. fs.close("input.txt", function(err){
  3. if(err){
  4. console.log(err);
  5. }
  6. })

删除文件

  1. const fs = require('fs');
  2. // 异步删除
  3. fs.unlink('文件', (err) => {
  4. if (err) throw err;
  5. console.log('已成功地删除文件');
  6. });
  7. // 同步删除
  8. try {
  9. fs.unlinkSync('文件');
  10. console.log('已成功地删除文件');
  11. } catch (err) {
  12. // 处理错误
  13. }