在 TypeScript 中读取文件内容
How to read a File’s contents in TypeScript
使用该readFileSync()
方法在 TypeScript 中读取文件的内容,例如
readFileSync(join(__dirname, 'example.txt'), 'utf-8')
. 该方法以路径和编码为参数,返回指定文件的内容。
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
。
{ "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');
. 该方法以路径和编码为参数,异步读取文件内容。
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()
上的方法来获取已解析的字符串。