如何在 TypeScript 中读取文件内容

在 TypeScript 中读取文件内容

How to read a File’s contents in TypeScript

使用该readFileSync()方法在 TypeScript 中读取文件的内容,例如
readFileSync(join(__dirname, 'example.txt'), 'utf-8'). 该方法以路径和编码为参数,返回指定文件的内容。

索引.ts
import { readFileSync, promises as fsPromises } from 'fs'; import { join } from 'path'; // ✅ read file SYNCHRONOUSLY function syncReadFile(filename: string) { const result = readFileSync(join(__dirname, filename), 'utf-8'); console.log(result); // 👉️ "hello world hello world ..." return result; } syncReadFile('./example.txt'); // -------------------------------------------------------------- // ✅ read file ASYNCHRONOUSLY async function asyncReadFile(filename: string) { try { const result = await fsPromises.readFile( join(__dirname, filename), 'utf-8', ); console.log(result); // 👉️ "hello world hello world ..." return result; } catch (err) { console.log(err); return 'Something went wrong' } } asyncReadFile('./example.txt');

第一个示例中的函数同步读取文件的内容。

如果您还没有为节点安装类型,请确保运行以下命令:

npm install --save-dev @types/node

如果您收到错误消息,指出fs未找到模块的类型声明,请将node字符串添加到文件中的types数组中tsconfig.json

tsconfig.json文件
{ "compilerOptions": { "types": [ "node" ] }, }

fs.readFileSync
方法将文件路径作为第一个参数,将编码作为第二个参数

该方法返回所提供路径的内容。

如果省略encoding参数,函数将返回一个缓冲区,否则返回一个字符串。

__dirname变量返回当前模块的目录名称。

例如,如果您__dirname在位于 的模块中使用该变量
/home/user/my-module.js,则该__dirname变量将返回/home/user

我们使用path.join方法将当前模块的目录路径与提供的文件名连接起来。

上面的代码片段假定有一个example.txt文件位于与当前模块相同的目录中。

例如,如果您正在阅读的文件位于上一级目录,您可以将../example.txt其作为参数传递给该函数。

或者,您可以使用该fsPromises对象异步读取文件。

使用该fsPromises.readFile()方法在 TypeScript 中异步读取文件内容,例如
const result = await fsPromises.readFile(join(__dirname, filename), 'utf-8');. 该方法以路径和编码为参数,异步读取文件内容。

索引.ts
import { promises as fsPromises } from 'fs'; import { join } from 'path'; // ✅ read file ASYNC async function asyncReadFile(filename: string) { try { const result = await fsPromises.readFile( join(__dirname, filename), 'utf-8', ); console.log(result); // 👉️ "hello world hello world ..." return result; } catch (err) { console.log(err); return 'Something went wrong'; } } asyncReadFile('./example.txt');

fsPromises.readFile
()
方法异步读取所提供文件的内容。

如果您没有为encoding参数提供值,则该方法返回一个缓冲区,否则返回一个string

该方法返回一个满足文件内容的承诺,因此我们必须await使用它或使用其.then()上的方法来获取已解析的字符串。

发表评论