javascript - 关闭流node.js

标签 javascript node.js fs

我无法关闭 node.js 中的流,这是我的代码

        var inp = fs.createReadStream("a/b/c/"+ Name);
        var out = fs.createWriteStream("a/b/c/"+ Name);
        inp.pipe(out);
            inp.close( function(err){
              if (err){
                console.log(err);
              } else {
              inp.unpipe(out);
              socket.emit('Done',{'Name':name});
              console.log('There will be no more data.');
              }
            });

然后我在代码中进一步添加了此功能,用于删除 inp 目录

var fse = require("fs-extra");
fse.emptyDir("a/b/c/", function(err){
  if(err){
    console.log(err);
  } else {
    console.log("doneaaaa")
    fse.remove("a/b/c",function(err){
      if(err){
        console.log(err);
      } else {
        console.log('doneaswell');
      }
    });
  }
});

我收到这个错误!!

doneaaaa
{ [Error: EBUSY: resource busy or locked, unlink 'a/b/c/.nfs000000002ab5000d00000072']
  errno: -16,
  code: 'EBUSY',
  syscall: 'unlink',
  path: 'a/b/c/.nfs000000002ab5000d00000072' }

这意味着该流仍然打开!

.nfs 文件是在流式传输时创建的,但流关闭后不应删除文件吗?

我做错了什么?

最佳答案

在执行删除/解锁操作之前,您必须等待回调关闭才能调用。从您提供的示例来看,情况并非如此。

关于javascript - 关闭流node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38501579/

相关文章:

javascript - 构造函数 props 状态 vs 简单状态

javascript - 从 JS 获取 shell 脚本

node.js - 具有私有(private)根证书颁发机构的 node-soap wssecuritycert

javascript - 在 Txt 文件中查找字符串,删除整行

javascript - 我有一个 .log 对象文件,如何将它们转换为 JSON 对象以便在 Javascript 中进行迭代?

javascript - 什么是 "javascript generated link"?

javascript - 刷新页面前 Hook

node.js - Node 在使用 webpack 时找不到模块 “fs”

javascript - 通过javascript改变-webkit-mask-position

node.js - Express/Passport 未为 super 测试代理设置 cookie