node学习笔记之fs(filesystem)模块

fs(file system) 文件系统模块

在我的理解里面,这个模块简直算是神奇爆了。
fs模块,一个可以操作文件的模块。
但是,fs模块有一个奇妙的小问题(待补充还有没有模块和fs类似),fs模块相对路径相对的地址为打开命令行的位置,而不是像require一样,以当前文件所在目录为起始路径。

本文后续会在较多地方提及buffer,在这里稍作说明:Node.js 可以用来处理二进制流数据或者与之进行交互。

fs.readFile(path[, options], callback)

	const fs = require('fs');

	fs.readFile('./index.html', (err, data) => {
   
		if (err) throw err
		console.log(data)
	})

最最最最简单直接的用法,读取文件,err是错误信息,直接抛出就好了,data是读取到文件的信息。
如果没有设置options(比如{encoding: 'utf8'})的情况下,会直接返回原始的 buffer。
(下图是打印出的data)
在这里插入图片描述
不过,options有一种骚操作,直接传入的是一个字符串类型;当传入的是字符串的时候,会直接将字符串设置成字符编码类型使用(比如fs.readFile('./index.html','utf8',()=>{}),这种情况下会直接把utf8作为字符编码)。
(下图是打印出的utf8编码的data,不要问为什么是乱码,因为txt的字符编码我莫得设置,其实说白了就是编码不统一)
在这里插入图片描述
(下图是打印出的还是utf8编码的data,这次是正常的了)
在这里插入图片描述
下面放着官网的介绍,最主要就是为了…怕你们看完了我写的小白介绍看不懂还得辛辛苦苦翻文档去,所以干脆给你们省个事儿,本人本着用得到才学习的学习方式(别打我),所以暂时就只写了最基本的用法(求求你们真的别打我)。

(没错这下面就是扒的官网介绍)

异步地读取文件的全部内容。

fs.readFile('/etc/passwd', (err, data) => {
    
  if (err) throw err;
  console.log(data);
});

回调会传入两个参数 (err, data),其中 data 是文件的内容。

如果没有指定 encoding,则返回原始的 buffer。

如果 options 是字符串,则它指定字符编码:

fs.readFile('/etc/passwd', 'utf8', callback);

path 是目录时, fs.readFile()fs.readFileSync() 的行为是特定于平台的。 在 macOS、Linux 和 Windows 上,将返回错误。 在 FreeBSD 上,将返回目录内容的表示。

// 在 macOS、Linux 和 Windows 上:
fs.readFile('<目录>', (err, data) => {
    
  // => [Error: EISDIR: illegal operation on a directory, read <目录>]
});

// 在 FreeBSD 上:
fs.readFile('<目录>', (err, data) => {
    
  // => null, <data>
});

fs.readFile() 函数会缓冲整个文件。 为了最小化内存成本,尽可能通过 fs.createReadStream() 进行流式传输。

fs.readFileSync(path[, options])

这个是fs.readFile的同步版本说白了,fs.readFileSync的返回值就是读取后的data,当需要捕获错误的时候就直接使用try catch进行捕获就好了。
(图片…是没有的,因为数据和上面异步的是一样的,直接上去看吧)

fs.writeFile(path, data[, options], callback)

简单来说就是写入一个文件,第一个参数是文件名,当没有这个文件的时候会创建这样一个文件,但是当文件已经存在的时候就会直接覆盖原文件。

(结合一下上面的readFileSync读取之前的1.txt并写入一个test.txt出来)

const fs = require('fs');

let data = fs.readFileSync('./1.txt', 'utf8');

fs.writeFile('./test.txt', data, 'utf8', (err) => {
   
    if (err) throw new Error(err);
    console.log('写入test.txt成功')
})

(下图就是通过读取1.txt里面的内容,然后写入一个新的test.txt文件)
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191130114140206.png

file 是一个文件名时,异步地将数据写入到一个文件,如果文件已存在则覆盖该文件。 data 可以是字符串或 buffer。

file 是一个文件描述符时,行为类似于直接调用 fs.write()(建议使用)。 请参阅以下有关使用文件描述符的说明。

如果 data 是一个 buffer,则 encoding 选项会被忽略。

const data = new Uint8Array(Buffer.from('Node.js中
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值