前言:
此刻看官们对“js文件系统”可能比较注意,兄弟们都想要学习一些“js文件系统”的相关资讯。那么小编同时在网上搜集了一些关于“js文件系统””的相关知识,希望朋友们能喜欢,我们快快来了解一下吧!Node.js 中我们可以使用 fs(File System) 模块来操作文件,文件系统模块有两种不同的方法,分别是同步方法和异步方法。
同步和异步方法
Node.js 文件系统模块中的方法均有异步和同步版本,例如同步读取文件内容可以使用 fs.readFileSync() 方法,而异步读取文件内容可以使用 fs.readFile() 方法。
异步方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息。
在大型系统中,一般我们会使用异步方法,因为同步方法容易导致进程被锁死。所以比起同步方法,异步方法的性能更高、速度更快、而且没有阻塞。
示例:
假设有一个test.txt文件的内容如下所示:
学互联网工作技能,上侠课岛!
同步读取文件
我们使用同步方法来读取上面这个文件中的内容,创建一个名为 synchronization.js 的文件,文件中的内容如下,使用readFileSync()方法读取内容:
var fs = require("fs");var data = fs.readFileSync('test.txt');console.log("同步读取文件内容为:\n" + data.toString());console.log("程序执行完毕");
启动这个 Node.js 文件,就会成功读取文件中的内容,如下所示:
>node synchronization.js同步读取文件内容为:学互联网工作技能,上侠课岛!程序执行完毕
异步读取文件
使用异步方法读取 test.txt 文件中的内容,我们只需要将 readFileSync()方法替换成 readFile() 方法。 创建一个名为 asynchronous.js 的文件,文件中的内容如下所示,在使用 readFile() 方法时,注意第二个参数是一个回调函数,包含了错误信息:
var fs = require("fs")fs.readFile('test.txt', function(err,data){ if(err){ return console.error(err); } console.log("异步读取文件内容为:\n"+data.toString());});console.log("程序执行完毕");
启动这个文件,会输出如下所示内容:
>node asynchronous.js程序执行完毕异步读取文件内容为:学互联网工作技能,上侠课岛!
文件系统模块的使用
要使用文件系统模块 fs,首先需要使用require()方法引入模块,这个我们以前已经讲过好几次啦,语法如下所示:
var fs = require('fs');
引入模块后,我们可以通过这个模块,可以实现打开文件、读取文件、写入文件、关闭文件等操作。
打开文件操作
在异步模式下打开文件的语法如下所示:
fs.open(path, flags[, mode], callback)path:文件路径。flags:文件打开行为。mode:文件模式。callback:回调函数,带有两个参数:err和fd。
示例:
var fs = require("fs");console.log("准备打开文件")fs.open('test.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); });
启动这个文件,会成功输出如下内容:
> node openfile.js准备打开文件文件打开成功!
读取文件操作
异步模式下读取文件的语法为:
fs.read(fd, buffer, offset, length, position, callback)fd:文件描述符。buffer:数据写入的缓冲区。offset:缓冲区写入的写入偏移量。length:要从文件中读取的字节数。position:文件读取的起始位置,如值为null,则会从当前文件指针的位置读取。callback:回调函数,带有三个参数:err错误信息、bytesRead读取的字节数、buffer缓冲区对象。
示例:
var fs = require("fs");var buf = new Buffer.alloc(1024);console.log("准备打开文件");fs.open('test.txt', 'r+', function(err, fd){ if(err){ return console.error(err); } console.log("文件打开成功!\n"); 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("读取的内容为:" + "\n" + buf.slice(0, bytes).toString()); } });});
启动这个文件,输出如下内容,则表示读取文件操作成功:
>node readfile.js准备打开文件文件打开成功!开始读取文件!总共有读取了42个字节读取的内容为:学互联网工作技能,上侠课岛!
写入文件操作
异步模式下写入文件的语法为:
fs.writeFile(file, data[, options], callback)file:文件名或文件描述符。data:要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。options:该参数是一个对象,包含 {encoding, mode, flag}。默认编码为utf8,模式为 0666,flag为'w'。callback:回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。
示例:
var fs = require("fs");console.log("准备写入文件");fs.writeFile('write.txt', '这里是要写入的数据内容', function(err){ if (err) { return console.error(err); } console.log("数据写入成功!");});
启动文件,write.txt中成功被写内容:
> node writefile.js准备写入文件数据写入成功!
关闭文件操作
异步模式下关闭文件的语法为:
fs.close(fd, callback)fd:通过fs.open()方法返回的文件描述符。callback:回调函数,没有参数。
示例:
var fs = require("fs");console.log("准备开文件")fs.open('test.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!\n"); //关闭文件 console.log("准备关闭文件"); fs.close(fd,function(err){ if(err) { console.log(err); } console.log('文件关闭成功!'); });});
启动文件:
> node close.js准备开文件文件打开成功!准备关闭文件文件关闭成功!
标签: #js文件系统