无法将缓冲区流写入nodeJs

时间:2017-05-06 14:26:04

标签: node.js

我必须创建一个名为stuff的目录,然后将流写入" stuff"中的文本文件。目录。但是,因为NodeJs中的代码没有以串行方式执行,所以我得到一个错误,表明该目录不存在。任何帮助,将不胜感激。代码粘贴在下面。

var http = require("http");

var fs = require("fs");

var readStream = fs.createReadStream(__dirname+"/readMe.txt","UTF-8");

  var writeStream;

  fs.mkdir("stuff",function(){

     writeStream = fs.createWriteStream(__dirname+"/stuff/writeMe.txt");

 });

readStream.on("data",function(chunk){

writeStream.write(chunk);

});

1 个答案:

答案 0 :(得分:0)

当您调用文件夹创建功能时,它会立即返回。但只有在创建文件夹(或创建失败)时才会执行回调函数。

fs.mkdir("stuff",function(){
    // executed after folder creation
    writeStream = fs.createWriteStream(__dirname+"/stuff/writeMe.txt");
});
// executed instantly

在您当前的代码中,当您尝试写入该文件夹时,尚未创建该文件夹,writeStreamundefined

所以你需要在创建之后写入文件夹:

fs.mkdir("stuff",function(){
    writeStream = fs.createWriteStream(__dirname+"/stuff/writeMe.txt");
    readStream.on("data",function(chunk){
        writeStream.write(chunk);
    });
 });