读书笔记《七天学会NodeJS》(1) - 文件操作

0. fs模块文件读写
    
    一般操作:
        fs.open打开文件
        fs.read读文件
        fs.write写文件
        fs.fsync刷新内存缓存以写入文件(类似于C/C++语言的flush)
        fs.close关闭文件
    
    文件读写:
        fs.writeFile
        fs.writeFileSync(同步)
        fs.readFile
        fs.readFileSync(同步)
        
    通过pipe管道读写数据流,用于大文件:
        fs.createReadStream
        fs.createWriteStream
    
    追加数据文件:
        fs.appendFile
    
    目录操作:
        fs.mkdir创建目录
        fs.readdir读目录
        
    其他操作:
        fs.stat/fs.lstat查看文件、目录信息
        fs.exists查看文件或目录是否存在
        fs.utimes访问修改时间
        fs.chmod/fs.chown权限操作
        fs.rename重命名目录或文件
        fs.rmdir移除空目录
        fs.watchFile/fs.unwatchFile监视文件

    (fs的很多API都通过回调函数传递结果,此外很多版本都有Sync结尾的同步版本API):
    
1. Buffer数据块
    类似js的字符串,不过可存储二进制数据,且不同于字符串,其可读写。
    除了读取文件得到Buffer的实例外,也可以直接new构造。
    .......

2. Stream数据流
    通过fs.createReadStream、fs.createWriteStream处理大文件数据,以一边读取一边处理(基于事件机制);
    灵活运用pause暂停读取、写入以及resume唤醒以继续读取或写入,可防止读写缓冲区爆仓。
    事实上Stream的pipe方法已实现以上防止缓冲区爆仓的问题。
    ......
    
3. path路径
    path内置模块,提供文件路径相关操作
    path.normalize标准化路径
    path.join拼接路径,转为标准化后的路径
    path.extname获取文件扩展名
    ......
    
4. 文本编码
    UTF-8编码可能带有BOM,JS读取文件或者合并操作时若存在BOM,则一般需要跳过BOM头,BOM字符如:UTF16BE:0xFEFF, UTF16LE: OXFFFE, UTF8:0xEFBBBF;
    根据文本文件头前几个字节等来判断文件是否包含BOM,以及使用的哪种Unicode编码。
    GBK编码需借助第三方包iconv-lite来转化GBK为UTF8
    内置的binary编码,可实现类似单字节编码,统一使用单字节编码来读取文件,不用关心文件的实际编码是GBK还是UTF8。

 

posted @ 2019-10-10 20:32  浩月星空  阅读(109)  评论(0编辑  收藏  举报