簡體   English   中英

如何使用Node fs模塊合並電子js中的所有PART文件

[英]How to merge all PART files in electron js using Node fs module

我在本地目錄之一中有零件文件列表

Directory: 'C:/Users/Documents/rast'

folder: rast
|
|____ rast_001.part (approx size: 500 MB)
|
|____ rast_002.part (approx size: 500 MB)
|
|____ rast_003.part (approx size: 500 MB)
|
|____ rast_004.part (approx size: 500 MB)
|
|____ rast_005.part (approx size: 500 MB)
|
|____ rast_006.part (approx size: 500 MB)

我想將所有零件文件合並到一個零件文件中。

我嘗試了以下方法,但無法實現。

require('events').EventEmitter.defaultMaxListeners = 15;

//requiring path and fs modules
const path = require('path');
const fs = require('fs');

const outputPath = path.join('C:/Users/Documents/rast', 'output.part');


var w = fs.createWriteStream(outputPath, {flags: 'a'});

//joining path of directory 
const directoryPath = path.join('C:/Users/Documents', 'rast');

//passsing directoryPath and callback function
fs.readdir(directoryPath, function (err, files) {

    files.forEach(function (file) {
        const filePath = path.join('C:/Users/Documents/rast', file);
        var r = fs.createReadStream(filePath);
        r.pipe(w, { end: true });
    }
});

如果執行此代碼,它將創建一個空的輸出文件(大小為零)。 請協助我。

注意:零件文件可以具有任何內容,可以是文本文件,JAR文件,EXE文件,ZIP文件,PDF等,

您可以為管道內的每個readstream創建writestream嗎? 像下面的例子。 希望這會幫助你。 嘗試偵聽寫入流中的錯誤。

require('events').EventEmitter.defaultMaxListeners = 15;
var fs=require('fs');
var path=require('path');
fs.readdir('./',(err,files)=>{
  files.forEach((file)=>{
    if(file!='node_modules'){
        console.log('Appending file-->'+file);
        var stream= fs.createReadStream(path.join(__dirname,file))
        .pipe(fs.createWriteStream('./output.part',{flags:'a',autoClose:true})
        .on('finish',()=>{console.log('Wstrm Closed...');})
        .on('error',(err)=>{console.log('Error at writrStream-->',err)}));

        stream.on('error',(err)=>{
            console.log('Read Stream Error-->',err);
        })
        .on('close',()=>{console.log('Rdstrm closed for file-->',file)});
    }

   });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM