写的操作和读的操作很类似

异步

fs.write

推荐用异步的

  1. let fs = require('fs')
  2. fs.writeFile('./test.txt',"晚饭吃啥?",{flag:'w',encoding:"utf-8"},function(err){
  3. if(err){
  4. console.log('写入出错了')
  5. }else{
  6. console.log('写入成功了')
  7. }
  8. })

我们希望不断的追加,所以我们这里写成:

  1. let fs = require('fs')
  2. fs.writeFile('./test.txt',"晚饭吃啥?",{flag:'a',encoding:"utf-8"},function(err){
  3. if(err){
  4. console.log('写入出错了')
  5. }else{
  6. console.log('写入成功了')
  7. }
  8. })

异步封装方法:

  1. function myFsWriteFile(path,w){
  2. return new Promise(function(resolve,reject){
  3. fs.writeFile(path,w,{flag:'a',encoding:'utf-8'},function(err){
  4. if(err){
  5. reject('写入出错了')
  6. }else{
  7. resolve('写入成功了')
  8. }
  9. })
  10. })
  11. }

在没有的文件也可以:

  1. function myFsWriteFile(path,w,wm){
  2. return new Promise(function(resolve,reject){
  3. fs.writeFile(path,w,{flag:wm,encoding:'utf-8'},function(err){
  4. if(err){
  5. reject(err)
  6. }else{
  7. resolve(err)
  8. }
  9. })
  10. })
  11. }
  12. async function writeList(){
  13. await myFsWriteFile('hello.html','<h3>你好</h3>','w')
  14. await myFsWriteFile('hello.html',"<input type='text' />",'w')
  15. }
  16. writeList()

删除文件

语法:

  1. fs.unlink(path,callback)

删除的操作尽量不要在生产环境下操作
win下回收站是找不到的不要瞎删

buffer

其他语言数组就像固定长度、设定好的内存,固定在那里;存取的速度是非常快的。不像这些语言效率这个高
为了提升数组的性能就有了buffer,buffer会在固定的内存空间开辟出一个固定大小的内存,而且buffer是让数组都连在一起放在内存的同一个地方
比如我们将数据放在存到Buffer里面:

首先

  1. //存到缓存区里面
  2. //将字符串转成buffer对象
  3. var str = "helloworld"
  4. let buf = Buffer.from(str)
  5. console.log(buf)

结果(node xxx.js):

  1. <Buffer 68 65 6c 6c 6f 77 6f 72 6c 64>

很明显这是16进制的数据(因为2进制太长了,所以以16进制代表了2进制)

怎么从Buffer(缓存)里面取数据(提取我们想要的数据)?

  1. //输出buffer的内容
  2. console.log(buf.toString())

其实我一开始是不知道存什么数据

当我们不知道要存什么数据的时候,这个时候我们就需要**设置一个空的Buffer**
开辟一个空的Buffer,请参考
可以使用new Buffer但是这个API要被废弃了,所以我们可以用Buffer.alloc

  1. //开辟一个空的buffer(缓存区)
  2. //alloc:
  3. // size:设置大小(这个是10个数据)
  4. let buf1 = Buffer.alloc(10)

那上面的这个10个数据到底是怎么存放的?

一个数据就代表是1个字节

  1. //开辟一个空的buffer(缓存区)
  2. //alloc:
  3. // size:设置大小(这个是10个数据)
  4. let buf1 = Buffer.alloc(10)
  5. buf1[0] = 10
  6. console.log(buf1)//查看buf1的

结果:

  1. <Buffer 0a 00 00 00 00 00 00 00 00 00>

有10个数据,第一个就是我们存的10

其实还有一个API可以创建缓冲区
Buffer.allocUnsafe()(Unsafe表示不安全了)

  1. let buf1 = Buffer.alloc(10)
  2. //buf1[0] = 10
  3. console.log(buf1)
  4. let buf2 = Buffer.allocUnsafe(10)
  5. console.log(buf2)

这个虽然不安全,但是效率来的高
**Buffer.alloc**开辟出空的缓存区,不仅要找到这个区间,我还要把里面的内容清除掉
**Buffer.allocUnsafe**给你开辟一个空间,你想怎么去操作都可以,里面有可能还有原来的数据
Buffer.allocUnsafe在大佬面前可以提取出数据修改数据,比如游戏金手指

Buffer的话,写JS神经网络用到的多。因为神经网络会用到大量的计算