[nodejs] 之 fs

本文详细介绍了Node.js中常见的文件操作方法,包括同步与异步的读写操作、使用流进行文件读写的方法以及如何向文件追加内容而不覆盖原有数据。通过具体的代码示例,帮助读者更好地理解和掌握这些文件操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.readFile/writeFile

对应的同步方法是:readFileSync/writeFileSync;
基本用法:

fs.readFile('/some.txt','utf8',function(err,data){
})
var data =fs.readFileSync('/some.txt',''utf8');

特点:
将要读取的文件读入缓存区,在从缓存区写入指定文件;
同步写入的过程,在写入过程node只能做这一件事;
因为是将文件作为整体写入缓存,在文件过大的情况下可能会使缓存爆苍;
新写入的内容会将之前的文件内容覆盖;

2.read/write

对应的同步方法是:readSync/writeSync;
基本用法:

var fs = require('fs');
fs.open('./message.txt','r',function(err,fd){
    var buf = new Buffer(225);
    //读取fd文件内容到buf缓存区
    fs.read(fd,buf,0,9,3,function(err,bytesRead,buffer){
        console.log(buf.slice(0,bytesRead).toString());
    }); 
    var buff = new Buffer(225);
    //位置设置为null会默认从文件当前位置读取
    fs.read(fd,buff,0,3,null,function(err,bytesRead,buffer){
        console.log(buff.slice(0,bytesRead).toString());
    });

    var buffer = new Buffer(225);
    //同步方法读取文件
    var bytesRead = fs.readFileSync(fd,buffer,0,9,3);
    console.log(bytesRead);
    console.log(buffer.slice(0,bytesRead).toString());
});

复制代码

特点:
写入内容写入缓存区;
缓存区满后将缓存区内容写入文件;
再读取下一块内容到缓存区;

3.creatReadStream/creatWriteStream

基本用法:

var fs = require('fs');
var readStream = fs.createReadStream('./message.txt',{start:3,end:12});
readStream.on('open',function(fd){
    console.log('开始读取文件');
});
readStream.on('data',function(data){
    console.log('读取到数据:');
    console.log(data);
});
readStream.on('end',function(){
    console.log('文件已全部读取完毕');
});
readStream.on('close',function(){
    console.log('文件被关闭');
});
readStream.on('error',function(err){
    console.log('读取文件失败');
});
var fs = require('fs');
var file = fs.createReadStream('./message.txt');
var out = fs.createWriteStream('./anotherMessage.txt');
file.on('data',function(data){
    out.write(data);
});
out.on('open',function(fd){
    console.log('需要被写入的文件已打开');
});
file.on('end',function(){
    //将操作系统缓存区中的数据全部写入文件
    out.end('再见',function(){
        console.log('文件全部写入完毕');
        console.log('共写入'+out.bytesWritten+'数据');
    });
});

往文件写入追加内容:

var log = fs.createWriteStream('log.txt', {'flags': 'a'});
// use {'flags': 'a'} to append and {'flags': 'w'} to erase and write a new file
log.write("this is a message");


----------
写入完成之后,最好用end来关闭写入的文件;
var log = fs.createWriteStream('log.txt', {'flags': 'a'});
// use {'flags': 'a'} to append and {'flags': 'w'} to erase and write a new file
log.end("this is a message");

特点:
把文件转换为流,并对该数据流添加了足够多的监听方法;可以随时监听/暂停/恢复对流的处理;略微抽象,但操作方便;

文件追加内容方法:

也即是追加不覆盖方法:

var log = fs.createWriteStream('log.txt', {'flags': 'a'});
// use {'flags': 'a'} to append and {'flags': 'w'} to erase and write a new file
log.end("this is a message");

fs.appendFile('message.txt', 'data to append', function (err) {

});

var fs = require('fs'), str = 'string to append to file';
fs.open('filepath', 'a', 666, function( e, id ) {
  fs.write( id, 'string to append to file', null, 'utf8', function(){
    fs.close(id, function(){
      console.log('file closed');
    });
  });
});

fs.appendFile('message.txt', 'data to append', function (err) {
  if (err) throw err;
  console.log('The "data to append" was appended to file!');
});
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它允许你使用JavaScript编写服务器端代码。在Node.js中,fs模块是用于处理文件系统操作的核心模块之一。 要安装Node.js和使用fs模块,可以按照以下步骤进行操作: 1. 首先,你需要下载和安装Node.js。你可以从Node.js官方网站(https://nodejs.org)上下载适合你操作系统的安装包,并按照安装向导进行安装。 2. 安装完成后,打开终端或命令提示符,输入以下命令来检查Node.js是否成功安装: ``` node -v ``` 如果成功安装,会显示Node.js的版本号。 3. 接下来,你可以创建一个新的文件,例如`app.js`,并在其中编写使用fs模块的代码。以下是一个简单的示例: ```javascript const fs = require('fs'); // 读取文件内容 fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); // 写入文件内容 fs.writeFile('file.txt', 'Hello, Node.js!', (err) => { if (err) throw err; console.log('文件已保存!'); }); ``` 上述代码中,我们首先使用`require`函数引入了fs模块。然后,我们使用`readFile`函数读取名为`file.txt`的文件内容,并在回调函数中打印出来。接着,我们使用`writeFile`函数将字符串`Hello, Node.js!`写入到`file.txt`文件中。 4. 保存并关闭`app.js`文件后,在终端或命令提示符中,进入到包含该文件的目录,并执行以下命令来运行代码: ``` node app.js ``` 如果一切顺利,你将看到读取文件内容和写入文件内容的相关输出。 这样,你就成功安装了Node.js并使用fs模块进行了文件系统操作。你可以根据自己的需求,进一步学习和探索Node.js和fs模块的更多功能和用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值