面向初学者的 TypeScript 文件系统操作

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

TypeScript 文件系统操作简介

文件系统操作是 TypeScript 开发中的关键任务之一。无论您是在创建服务器端应用程序、数据处理工具还是 Web 服务器,都必然需要读取、写入和管理文件与目录。在本指南中,我们将介绍 TypeScript 中 fs(文件系统)模块的基础知识,探讨同步和异步操作,并学习如何处理错误。

TypeScript 是 JavaScript 的一个严格类型化超集,它增加了静态类型化。在操作文件系统时,我们将使用标准的 Node.js 模块 fs,但会利用 TypeScript 的额外优势:自动补全、类型检查和更好的代码可读性。



项目设置与模块导入

开始之前,请确保您已安装 Node.js 和 TypeScript。创建一个新项目并安装必要的类型定义:

mkdir fs-typescript-tutorialcd fs-typescript-tutorialnpm init -ynpm install typescript @types/node --save-devnpx tsc --init

操作文件系统需要两个主要模块:

  • fs — 用于执行文件操作(读取、写入、删除等)
  • path — 用于方便地处理路径(拼接、规范化、获取扩展名)

将它们导入到我们的 TypeScript 文件中:

import * as fs from 'fs';import * as path from 'path';

// 另一种方式 — 仅导入所需函数:import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';import { join, resolve } from 'path';

请注意:我们使用 import * as fs,因为 fs 模块导出了许多函数。TypeScript 会自动从安装的 @types/node 包中获取类型定义。



文件读取与写入

我们从最基本的操作开始 — 读取和写入文本文件。Node.js 有两种方法:同步和异步。对于简单的脚本和工具,通常使用同步方法;而对于高负载服务器,则使用异步方法,以避免阻塞事件循环。



同步读取与写入

同步方法会阻塞程序执行,直到操作完成。它们易于使用,适用于速度不关键的场景:

import { readFileSync, writeFileSync } from 'fs';import { join } from 'path';

const filePath = join(__dirname, 'data.txt');

// 写入文件(如果文件不存在则创建)writeFileSync(filePath, 'Hello, TypeScript!', 'utf-8');

// 读取文件const content: string = readFileSync(filePath, 'utf-8');console.log(content); // 输出:Hello, TypeScript!

请注意类型标注 content: string — TypeScript 确保我们获得一个字符串。如果文件不存在,则会抛出异常,需要通过 try/catch 进行处理。



异步读取与写入

异步方法接受回调函数或返回 Promise(在较新版本中)。建议使用带有 async/await 的 Promise 版本:

import { promises as fsPromises } from 'fs';import { join } from 'path';

const filePath = join(__dirname, 'async-data.txt');

async function handleFile(): Promise<void> { try { // 异步写入 await fsPromises.writeFile(filePath, 'Async content', 'utf-8'); // 异步读取 const data: string = await fsPromises.readFile(filePath, 'utf-8'); console.log(data); // Async content } catch (error) { console.error('文件操作出错:', error); }}

handleFile();

使用 async/await 使代码看起来像同步

博客

书籍推荐