美文网首页
常见方法(文件打开,读,写和文件追加,删除)

常见方法(文件打开,读,写和文件追加,删除)

作者: 悟空你又瘦了 | 来源:发表于2017-07-21 10:05 被阅读0次

文件操作flags

  • r 以读的形式打开文件,文件不存在就抛异常
  • r+ 以读和写的形式打开文件,文件不存在就抛异常
  • rs+ 以同步的读和写形式打开文件,通知操作系统忽略系统缓存(不推荐使用)
  • w 以写的形式打开文件,如果文件不存在就创建,存在就覆盖
  • wx 与w形式类似,只不过文件存在时操作会失败
  • w+ 以读和写的形式打开文件,如果文件不存在就创建,存在就覆盖
  • a 以追加的形式打开文件,如果文件不存在就创建
  • ax 与a类似,如果文件存在操作会失败
  • a+ 以读和写的形式打开文件,如果文件不存在就创建
  • ax+ 与a+类似,如果文件存在操作会失败

打开文件(open)

/*
  文件操作 fs.open(path, flags[,mode], callback);
  path   --- 文件的路径
  flags  ---  打开文件的方式
  mode   --- Linux平台有效,可以控制文件的读、写、可执行 777,参数是可选的
  callbacl  --- 回调函数(err, fd)
*/
const path = require('path');
const fs = require('fs');
 异步方法
fs.open(path.join(__dirname,'./data.txt'),'r', (err ,fd) => {
  // fd file discriptor
  // 文件描述符,通过 fd 可以操作文件,默认从 3 开始,打开多次接着累加
  if (err) {
    console.log('错误');
    return;
  }else {
    console.log(err, fd);
  }
})
//  同步方法
// 同步方法的返回值表示fd
let ret = fs.openSync(path.join(__dirname,'./data.txt'), 'r');
console.log(ret);

读文件(read)

简单写法
/*
  文件读操作
  fs.readFile(file[, options], callback);
  file      ---   表示文件名称或者文件描述符
  options   ---   可以是字符串形式,表示编码, 可以是对象形式
  callback  ---   回调函数(err, data 实际读取的数据)
  注意:
  如果第二个参数指定编码,回调函数中的data是字符串,不指定的是Buffer
  fs.readFileSync(file[, options]);
*/
const path = require('path');
const fs = require('fs');
// 异步方法
// 方法一
fs.readFile(path.join(__dirname, './data.txt'), (err, data) => {
  console.log(data.toString());
})
// 方法二
// fs.readFile(path.join(__dirname, './data.txt'), 'utf8',(err, data) => {
//   console.log(data);
// })
// 同步方法
// let content = fs.readFileSync(path.join(__dirname, './data.txt'));
// let content = fs.readFileSync(path.join(__dirname, './data.txt'), 'utf8');
// console.log(content);
原始写法(需要buffer,将读到的内容放到buffer里面,open里面嵌套read)
/*
 文件读写操作
 fs.read(fd, buffer, offset, length, position, callback);
 fd        --- 文件描述符
 buffer    --- 读取的数据放到buffer中
 offset    --- 读取的数据从buffer的第几个位置开始写
 length    --- 读取文件中数据的字节数量
 position  --- 从文件的什么位置开始读
 callback  --- 回调函数(err, bytes)
*/
// 异步方法
const path = require('path');
const fs = require('fs');
// 00 00 00 00 00
fs.open(path.join(__dirname,'data.txt'), 'r', (err, fd) => {
    let buf = Buffer.alloc(5);
    fs.read(fd, buf, 1, 3, null, (err, bytes, buffer) => {
        console.log(err, bytes, buffer);
        console.log(buf);
        console.log(buf == buffer);
    })
})
// 同步方法
// let fd = fs.openSync(path.join(__dirname, './data.txt'),'r');
// let buf = Buffer.alloc(5);
// let ret = fs.readSync(fd, buf, 0, 3);
// console.log(ret, buf);

写文件(write会将之前的覆盖掉)

简单写法
/*
  文件写操作
  fs.writeFile(file, data[,options], callback);
  file      ---   表示文件名称或者文件描述符
  data      ---   写入的数据
  options   ---   可以是字符串形式,表示编码, 可以是对象形式
  callback  ---   回调函数(err, data 实际读取的数据)

*/
const path = require('path');
const fs = require('fs');

// 异步方法
fs.writeFile(path.join(__dirname, './data.txt'), '祖国万岁', 'utf8', (err) => {
  console.log(err);
})

// 同步方法
// fs.writeFileSync(path.join(__dirname,'./data.txt'),'葫芦娃');
原始写法(需要buffer,将buffer的内容写到文件里面,也可以不用buffer,open里面嵌套write)
 // 方法1:
//  fs.write(fd,buffer,offset,length[, position], callback);
//  fs.writeSync(fd, buffer, offset, length[,position]);
//  方法2:
//  fs.write(fd, data[, position[, encoding]], callback);
 // fs.writeSync(fd, data[,position[, encoding]])
const path = require('path');
const fs = require('fs');

// -------------------------- 异步方法 -----------------------------
// 方法一

// 方法重载,
fs.open(path.join(__dirname, './data.txt'), 'w', (err, fd) => {
  let buf = Buffer.from('abcdefe');
  // written 指的是字节数量,而不是字符数量, 中文在utf8, 3
  fs.write(fd, buf, 2, 4, (err, written, buffer) => {
    console.log(err, written, buffer);
    console.log(buf == buffer);
  })
})

// 方法二
fs.open(path.join(__dirname, './data.txt'), 'w', (err, fd) => {
  fs.write(fd, '程序员', (err, written, str) => {
    console.log(err, written, str);
  })
})
// --------------------- 同步方法 ---------------------------
// 方法一
// let fd = fs.openSync(path.join(__dirname, './data.txt'), 'w');
// let buf = Buffer.from('中国');
// let ret = fs.writeSync(fd, buf, 0, 6, null);
// console.log(buf);


// // 方法二
// let fd = fs.openSync(path.join(__dirname, './data.txt'), 'w');
// let ret = fs.writeSync(fd, '程序员');
// console.log(ret);
//

文件内容追加

/*
  文件内容追加
  fs.appendFile(file, data[, options], callback);
  file      ---   表示文件名称或者文件描述符
  data      ---   写入的数据
  options   ---   可以是字符串形式,表示编码, 可以是对象形式
  callback  ---   回调函数(err, data 实际读取的数据)-

  fs.appendFileSync(file, data[, options]);

*/
const path = require('path');
const fs = require('fs');
// 异步方法
fs.appendFile(path.join(__dirname, './data.txt'), '打奥特曼', (err) => {
  console.log(err);
})
 // 同步方法
// fs.appendFileSync(path.join(__dirname, './data.txt'),'打小怪兽');

删除文件

/*
  删除文件
  fs.unlink(path, callback);
*/
const path = require('path');
const fs = require('fs');
fs.unlink(path.join(__dirname,'./data1.txt'), (err) => {
  console.log(err);
})
// 不能删除目录
// fs.unlink(path.join(__dirname, './abc'), (err) => {
//   console.log(err);
// 

相关文章

  • 常见方法(文件打开,读,写和文件追加,删除)

    文件操作flags r 以读的形式打开文件,文件不存在就抛异常 r+ 以读和写的形式打开文件,文件不存在就抛...

  • Python文件总结

    1.文件的打开和关闭, 文件的读,写和追加 f=open("test","w") content=f.write(...

  • C语言基础入门必读---文件的操作

    C语言具有操作文件的能力,比如打开文件、读取和追加数据、插入和删除数据、关闭文件、删除文件等。 一、文件操作函数有...

  • Python文件各种操作小结

    文件 1.文件的打开和关闭, 文件的读,写和追加 2.文件的定位 3.文件及文件夹的相关操作 4.文件的备份

  • go 文件操作

    File 建立File内存地址 打开文件 写文件 读文件 删除文件 判断文件是否存在 file写文件 file读文...

  • 文件操作

    文件操作 Open 获取文件对象 R为读 W为写 C为关闭文件 A为在文件内容后追加 R+读和追加的组合 read...

  • 遍历文件

    1. for循环遍历文件 1. 打开文件open openr:以读方式打开w :以写方式打开a :以追加模式r+ ...

  • Node内置模块——FileSystem

    文件操作 写入文件(覆盖式 / 追加式) 复制文件 读文件 删除文件 重命名/移动文件[夹] 文件夹操作 新建文件...

  • Python four day

    文件操作1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件 r读w写a追加 读文件:...

  • Python基础015--文件对象的读写操作

    文件对象的读写操作 文件的读写操作文件模式操作r以读方式打开w以写的方式打开(必要时清空)a以追加的模式打开(必要...

网友评论

      本文标题:常见方法(文件打开,读,写和文件追加,删除)

      本文链接:https://www.haomeiwen.com/subject/hipskxtx.html