文件描述符在您能够与文件系统中的文件进行交互之前,您必须获得一个文件描述符 。
文件描述符是对打开文件的引用,是通过使用fs模块提供的open()方法打开文件返回的数字(fd) 。此数字(fd)唯一标识操作系统中打开的文件:
const fs = require('fs');fs.open('/Users/joe/test.txt', 'r', (err, fd) => { // fd is our file descriptor});
【查看nodejs安装路径 node文档怎么看】请注意,我们将r用作fs.open()调用的第二个参数 。
该标志表示我们打开文件进行读取(read) 。
您通常使用的其他标志有:
描述
不存在则创建
r+
此标志打开文件进行读取和写入
X
w+
此标志打开文件进行读取和写入,并将流定位在文件的开头
v
a
这个标志打开文件进行写入,它还将流定位在文件的末尾
v
a+
这个标志打开文件进行读写,它还将流定位在文件的末尾
v
您也可以使用fs.openSync方法打开文件,该方法返回文件描述符,而不是在回调中提供:
const fs = require('fs');try { const fd = fs.openSync('/Users/joe/test.txt', 'r');} catch (err) { console.error(err);}
一旦您获得了文件描述符 , 无论您选择什么方式,您都可以执行所有需要它的操作,比如调用fs.close()和许多其他与文件系统交互的操作 。您也可以使用fs/promises模块提供的基于promise的fsPromises.open方法打开文件 。
fs/progress模块仅从Node.js v14开始提供 。在v14之前 , 在v10之后,您可以使用require(‘fs’).proness 。在v10之前 , 在v8之后 , 您可以使用util.proisify将fs方法转换为基于promise的方法 。
const fs = require('fs/promises');// Or const fs = require('fs').promises before v14.async function example() {let filehandle;try {filehandle = await fs.open('/Users/joe/test.txt', 'r');console.log(filehandle.fd);console.log(await filehandle.readFile({ encoding: 'utf8' }));} finally {if (filehandle) await filehandle.close();}}example();
以下是util.prostify的一个示例:const fs = require('fs');const util = require('util');async function example() {const open = util.promisify(fs.open);const fd = await open('/Users/joe/test.txt', 'r');}example();
要查看有关fs/promise模块的更多详细信息,请查看fs/promises API 。读取文件在Node.js中读取文件的最简单方法是使用fs.readFile()方法,向其传递文件路径、编码和回调函数,该函数将与文件数据(以及错误)一起调用:
const fs = require('fs');fs.readFile('/Users/joe/test.txt', 'utf8', (err, data) => {if (err) {console.error(err);return;} console.log(data);});
或者,您可以使用同步版本fs.readFileSync():const fs = require('fs');try {const data = http://www.wokk.cn/fs.readFileSync('/Users/joe/test.txt', 'utf8');console.log(data);} catch (err) { console.error(err);}
您还可以使用fs/promises模块提供的基于promise的fsPromises.readFile()方法:const fs = require('fs/promises');async function example() {try {const data = http://www.wokk.cn/await fs.readFile('/Users/joe/test.txt', { encoding: 'utf8' });console.log(data);} catch (err) { console.log(err);}}example();
fs.readFile()、fs.readFileSync()和fsPromises.readFile()这三个函数在返回数据之前都会读取内存中文件的全部内容 。这意味着大文件将对内存消耗和程序执行速度产生重大影响 。
在这种情况下,更好的选择是使用流读取文件内容 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 如何下载和安装方正仿宋简体字体
- TC Games连接手机的详细步骤
- WIN7系统如何查看隐藏的文件和文件夹
- DOS命令行中如何查看输入命令的历史记录
- 新如何更快速地下载和安装Office 2019?详细教程分享!
- 如何查看电脑型号
- 如何正确给笔记本电脑安装内存条
- 如何在电脑上安装快资讯应用
- 如何下载并安装PC版微信
- 新Unity软件中如何高效查看和管理收藏夹SEO技巧