使用 TypeScript 写入文件
How to write to a File using TypeScript
使用该fs.writeFileSync()
方法写入 TypeScript 中的文件,例如
writeFileSync(join(__dirname, filename), data)
. 该方法将文件路径、数据和选项对象作为参数,并将提供的内容写入文件。
import { readFileSync, writeFileSync, promises as fsPromises } from 'fs'; import { join } from 'path'; // ✅ write to file SYNCHRONOUSLY function syncWriteFile(filename: string, data: any) { /** * flags: * - w = Open file for reading and writing. File is created if not exists * - a+ = Open file for reading and appending. The file is created if not exists */ writeFileSync(join(__dirname, filename), data, { flag: 'w', }); const contents = readFileSync(join(__dirname, filename), 'utf-8'); console.log(contents); // 👉️ "One Two Three Four" return contents; } syncWriteFile('./example.txt', 'One\nTwo\nThree\nFour'); // -------------------------------------------------------------- // ✅ write to file ASYNCHRONOUSLY async function asyncWriteFile(filename: string, data: any) { /** * flags: * - w = Open file for reading and writing. File is created if not exists * - a+ = Open file for reading and appending. The file is created if not exists */ try { await fsPromises.writeFile(join(__dirname, filename), data, { flag: 'w', }); const contents = await fsPromises.readFile( join(__dirname, filename), 'utf-8', ); console.log(contents); // 👉️ "One Two Three Four" return contents; } catch (err) { console.log(err); return 'Something went wrong'; } } asyncWriteFile('./example.txt', 'One\nTwo\nThree\nFour');
代码片段中的第一个函数同步写入文件。
如果您还没有为节点安装类型,请确保运行以下命令:
npm install --save-dev @types/node
如果您收到错误消息,指出fs
未找到模块的类型声明,请将node
字符串添加到文件中的types
数组中tsconfig.json
。
{ "compilerOptions": { "types": [ "node" ] }, }
fs.writeFileSync
方法将文件路径作为第一个参数,将数据作为第二个参数,将对象options
作为第三个参数。
options 对象中的flagw
属性默认设置为 – “打开文件进行写入,如果不存在则创建它”。
a+
标志,它会打开一个文件进行读取和附加,如果文件不存在,也会创建该文件。您可以在 Node.js 文档的这一部分查看其他可用的标志值
。
该__dirname
变量返回当前模块的目录名称。
例如,如果您__dirname
在位于 的模块中使用该变量
/home/user/my-module.js
,则该__dirname
变量将返回/home/user
。
我们使用path.join方法将当前模块的目录路径与提供的文件名连接起来。
上面的代码片段写入一个名为的文件,该文件example.txt
位于与当前模块相同的目录中。
../example.txt
其作为参数传递给该函数。或者,您可以使用该fsPromises
对象异步写入文件。
使用该fsPromises.writeFile()
方法在 TypeScript 中异步写入文件,例如await fsPromises.writeFile(join(__dirname, filename), data)
. 该方法以路径和数据为参数,将数据异步写入文件。
// ✅ write to file ASYNCHRONOUSLY async function asyncWriteFile(filename: string, data: any) { /** * flags: * - w = Open file for reading and writing. File is created if not exists * - a+ = Open file for reading and appending. The file is created if not exists */ try { await fsPromises.writeFile(join(__dirname, filename), data, { flag: 'w', }); const contents = await fsPromises.readFile( join(__dirname, filename), 'utf-8', ); console.log(contents); // 👉️ "One Two Three Four" return contents; } catch (err) { console.log(err); return 'Something went wrong'; } } asyncWriteFile('./example.txt', 'One\nTwo\nThree\nFour');
fsPromises.writeFile
方法将数据
异步写入文件以替换文件内容(如果文件已存在)。
a+
值。 flag
该方法返回一个承诺,该承诺undefined
在成功时实现。