Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在node js中读写多个文本文件_Node.js - Fatal编程技术网

Node.js 如何在node js中读写多个文本文件

Node.js 如何在node js中读写多个文本文件,node.js,Node.js,在下面的代码中,我可以读取file1.txt数据并将其写入file2.txt,但我想读取file1、file2、file3和file4,然后将所有这些数据写入file5.txt。怎么做?谁能编辑下面的代码,因为我是初学者 var fs = require("fs"); fs.readFile('file1.txt',function(err, data){ fs.writeFile('file2.txt', data) }); 一种方法是嵌套多个readfi

在下面的代码中,我可以读取
file1.txt
数据并将其写入
file2.txt
,但我想读取file1、file2、file3和file4,然后将所有这些数据写入
file5.txt
。怎么做?谁能编辑下面的代码,因为我是初学者

 var fs = require("fs");

    fs.readFile('file1.txt',function(err, data){
        fs.writeFile('file2.txt', data)
    });

一种方法是嵌套多个readfile,然后将writeFile嵌套在其中。大概是这样的:

var fs = require("fs");

fs.readFile('file1.txt',function(err1, data1){
    fs.readFile('file2.txt',function(err2, data2){
        fs.readFile('file3.txt',function(err3, data3){
             if(err1 || err2 || err3){
                   throw new Error();
             }
             let data = data1+data2+data3;
             fs.writeFile('file4.txt', data);
         });
    });
});
实现这一点的另一种方法是使用或类似的promise库

var fs = require('fs');
var Promise = require('bluebird');
var readFile = Promise.promisify(fs.readFile);
var writeFile = Promise.promisify(fs.writeFile);

var promiseArray = [readFile('file1.txt'), readFile('file2.txt'), readFile('file3.txt')];

Promise.all(promiseArray).then((dataArray)=>{
     var data = '';
     for(var i=0;i<dataArray.length;i++){
          data += dataArray[i];
     }
     return writeFile('file4.txt', data);
});
var fs=require('fs');
风险值承诺=要求(“蓝鸟”);
var readFile=Promise.promisify(fs.readFile);
var writeFile=promisify.promisify(fs.writeFile);
var promiseArray=[readFile('file1.txt')、readFile('file2.txt')、readFile('file3.txt');
Promise.all(promiseArray).then((dataArray)=>{
var数据=“”;

对于(var i=0;i我将为此选择promise库。使您的对象
成为表
可提高代码可读性并防止代码在右侧增长。我的解决方案与其他解决方案几乎相同,只是我使用nodejs Buffer连接其他文件的数据

const fs = require('fs')
const file1 = 'a.txt'
const file2 = 'b.txt'

const allPromises = [file1, file2].map(eachFile => {
    return new Promise((resolve, reject) => {
        fs.readFile(eachFile, (err, data) => {
            if(err) {
                reject(err)
            }else {
                resolve(data)
            }
        })
    })
})

Promise.all(allPromises).then(onfulfilled => {
    const totalBufferContent = Buffer.concat(onfulfilled)
    fs.writeFile('c.txt', totalBufferContent, (err) => {
        if(err) throw err;

        console.log('Done')
    })
})

我发现的最简单的解决方案是安装concat包——它将为您完成所有的工作:)请注意,
writeFile
已被弃用于
writeFileSync
(code[DEP0013])

首先安装软件包

npm install concat
然后编码

const concat = require('concat'); //Or use ES6 Syntax
const fs = require('fs');


concat(['1.txt', '2.txt', '3.txt']).then(files_being_written => 
fs.writeFileSync('your-concated-file.txt', files_being_written))

// or this way
// concat(['1.txt', '2.txt', '3.txt'], 'your-concated-file.txt') 
资料来源:


类似这样的东西?谢谢,它帮助我和另一个人思考如何在嵌套中创建文件1、文件2、文件3