Próbuję wyodrębnić plik .tar (spakowany z katalogu), a następnie sprawdzić nazwy plików w wyodrębnionym katalogu. Używam tar-fs do wyodrębnienia pliku tar, a następnie użyj fs.createReadStream do manipulowania danymi. Oto, co mam do tej pory:System plików węzła js: zdarzenie końcowe nie jest wywoływane dla czytelnego strumienia
fs.createReadStream(req.files.file.path)
.pipe(tar.extract(req.files.file.path + '0'))
.on('error', function() {
errorMessage = 'Failed to extract file. Please make sure to upload a tar file.';
})
.on('entry', function(header, stream, callback) {
console.error(header);
stream.on('end', function() {
console.error("this is working");
});
})
.on('end', function() {
//the one did not get called
console.error('end');
})
;
Miałem nadzieję na wyodrębnienie całego folderu, a następnie sprawdź nazwy plików. Cóż, jeszcze nie dotarłem tak daleko ...
Według mojego zrozumienia, dostałem czytelny strumień po rurze. Czy czytelny strumień ma wydarzenie końcowe? Moje pytanie brzmi, dlaczego zdarzenie end
w kodzie nie jest wywoływane?
Dzięki!
Witam @hassansin Dziękuję za wskazówki! Jeszcze jedno pytanie: Zdarzenia końcowe i końcowe pochodzą odpowiednio z zapisanych i zapisanych przez rodziców klas Macierzystych. Pierwsze zdanie mówi "koniec" dla Zapisywalnego i koniec dla Czytelnego, prawda? 'Zdarzenie finish jest wywoływane po wywołaniu funkcji .end() i wszystkie porcje zostały przetworzone przez _transform, koniec jest wywołany po wywołaniu wszystkich danych, które są po wywołaniu oddzwonienia w _flush. Zostanie wywołane po zakończeniu jeśli należą do różnych rzeczy? To jest mylące dla nowicjusza. Dzięki. – odieatla
'finish' jest związane z' tar.extract() ', które jest zapisywalnym strumieniem. Ten zapisywalny strumień wewnętrznie utrzymuje kilka wejść 'stream's opartych na nie. plików w tar. Kiedy wszystkie pliki wejściowe są zapisywane na dysku, a dla nich jest emitowane słowo "koniec", program piszący ostatecznie wysyła polecenie "zakończ". – hassansin
OK Myślę, że mogę to zdobyć ... Czyli 'finish' jest emitowany po tym, jak wszystkie" końce "strumienia są emitowane? – odieatla