2017-05-06 36 views
0

我不得不创建一个名为stuff的目录,并将该流写入“stuff”目录内的文本文件中。但是,因为NodeJs中的代码没有以串行方式执行,所以我得到一个说明该目录不存在的错误。任何帮助,将不胜感激。代码粘贴在下面。 无法将缓冲流写入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); 

}); 

回答

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); 
    }); 
}); 
+0

感谢。这有帮助 –