Nodejs的path模块是处理文件路径的核心工具它提供跨平台兼容性路径拼接解析和规范化功能主要方法包括join用于连接路径resolve从右向左解析路径parse分解路径信息format逆向操作normalize消除冗余路径isAbsolute检测绝对路径relative计算相对路径模块自动适配不同操作系统分隔符也可强制使用特定平台风格常见应用场景包括动态导入处理文件上传路径配置文件解析使用时需注意路径遍历攻击防护符号链接处理和性能优化技巧如缓存常用路径与fsurl等模块协作良好现代JavaScript可通过ES模块导入TypeScript提供类型支持测试时需考虑不同操作系统路径差异浏览器环境可使用类似实现替代
Nodejs的fs模块提供了处理文件系统操作的功能包括同步和异步方法异步方法更受欢迎因其不阻塞事件循环创建目录可使用mkdir方法支持递归创建读取目录内容用readdir获取详细信息用stat重命名用rename删除空目录用rmdir非空目录用rm并设置recursive实用技巧包括检查目录是否存在遍历目录树创建临时目录错误处理需注意不同错误类型性能考虑方面同步方法会阻塞事件循环批量操作建议使用流或工作队列跨平台时注意路径分隔符差异高级功能包括用watch监控目录变化以及与流结合高效处理大量文件
Nodejs提供了文件监视功能通过fs.watch和fs.watchFile实现文件系统变化的监听fs.watch基于操作系统底层机制更高效支持事件类型包括renamechange和error还可递归监视目录树fs.watchFile通过轮询检查变化兼容性更好第三方库chokidar提供更复杂功能实际应用包括自动重启服务器和实时样式重载性能优化建议合理设置轮询间隔和使用防抖处理跨平台需注意系统差异错误处理要妥善资源清理确保进程退出时关闭监视器与版本控制配合时忽略相关目录高级模式匹配可用glob实现
文件描述符是Unix-like系统中用于标识打开文件或IO资源的非负整数Nodejs通过fs模块提供了文件系统操作接口包括文件描述符的获取和使用标准流的文件描述符包括标准输入输出和错误文件描述符可用于文件锁定截断等高级操作它与流抽象密切相关底层也使用文件描述符未正确关闭文件描述符会导致资源泄漏需要合理管理以提升IO性能在子进程中文件描述符的继承行为需要注意Nodejs提供了同步和异步的文件描述符操作API错误处理至关重要网络套接字也使用文件描述符抽象
Nodejs文件操作分为同步和异步两种模式同步操作会阻塞事件循环代码直观但性能较差适合初始化或顺序执行场景异步操作通过回调Promise或asyncawait实现非阻塞IO是Nodejs的核心优势特别适合IO密集型场景性能测试显示异步处理速度可达同步的十倍两者错误处理机制不同同步用trycatch异步通过回调参数传递实际开发常混合使用如启动时同步加载配置运行时异步处理请求大文件推荐使用流式处理Nodejs10引入的promisesAPI提供了更现代的异步编程方式选择建议命令行工具初始化用同步Web服务器必须用异步批量处理根据文件大小决定小文件可同步大文件必须异步或流式处理
Nodejs的fs模块提供了文件系统操作的核心功能支持同步和异步两种API形式包括文件读写目录操作权限管理等文件读取有异步readFile同步readFileSync和流式createReadStream三种方式写入操作包括writeFile追加appendFile和流式写入文件系统操作涵盖检查文件存在获取文件状态重命名文件等目录操作涉及创建读取和删除目录文件监视使用watch方法高级操作包括文件描述符操作和权限修改性能优化建议使用Promise和fs-extra模块错误处理需注意ENOENT错误和资源清理实际应用场景包括配置文件读取和日志记录系统还可与路径模块结合使用进行路径解析
Nodejs中的Stream在文件处理中非常实用特别是大文件场景相比传统方法可以分块处理避免内存问题HTTP模块基于Stream实现适合处理大型请求体和响应通过管道连接转换流可实现复杂数据处理数据库操作时Stream能有效处理大量记录避免内存溢出实时日志处理可以逐行分析持续产生的数据视频流处理需要Stream支持范围请求压缩解压缩任务也能高效完成CSV数据处理可以逐行读取合并多个数据源时Stream能避免内存问题WebSocket等实时通信协议基于Stream实现图像处理可以分块操作加密解密数据流保证安全性同时降低内存使用自定义网络协议实现时Stream提供了良好抽象
Nodejs中的Stream是处理流式数据的核心抽象错误处理尤为重要且复杂所有Stream都是EventEmitter实例错误通过error事件传播未处理的error事件会导致进程崩溃正确的做法是始终监听error事件可读流在文件不存在权限不足或读取中断时会触发error事件可写流需要注意背压情况管道链中的错误不会自动传播Nodejs10引入了streampipeline解决这个问题转换流需要同时处理读写错误根据场景可能需要实现重试逻辑或备用数据源等恢复策略高级错误处理模式包括错误聚合和带状态的错误处理现代Nodejs支持asyncawait与Stream配合错误处理会影响性能调试时可以使用NODE_DEBUG环境变量或自定义调试流常见陷阱包括错误处理顺序问题和未清理资源
Nodejs中的Stream是处理流式数据的抽象接口允许数据分块处理而非一次性加载到内存特别适合处理大文件和网络通信场景Stream有四种基本类型包括ReadableWritableDuplex和Transform各自针对不同场景设计通过示例展示了高性能文件处理网络通信应用以及转换流功能还介绍了背压机制流量控制和自定义日志系统最后演示了流式数据库操作和实时数据分析Stream能显著降低内存占用提升吞吐量是处理大量数据的高效工具
Nodejs中的自定义流是处理大数据或不确定数据源的高效方式分为可读流可写流双工流和转换流四种基本类型可读流通过继承Readable类并实现_read方法使用push推送数据可写流继承Writable实现_write方法处理写入数据双工流继承Duplex同时实现读写接口转换流继承Transform实现_transform方法修改数据后输出高级控制包括设置缓冲区大小和资源清理对象模式流可以处理JavaScript对象错误处理需要监听error事件并实现_destroy方法性能优化技巧包括使用缓冲池和合理设置缓冲区大小实际应用如CSV解析器等自定义流能有效提升数据处理效率