ノードでファイルを読み書きするために ssh2-sftp ライブラリを使用しようとしています。sftp サイトでより大きな CSV ファイル (ただし、大きすぎない - 2 MB のみなど) で sftp.get を実行し、返されたストリームでデータを読み取ると、14 番目の stream.on の後で呼び出しがハングします。 (「データ」) 呼び出し。いくつかの異なるサンプル ファイルでこれをテストしましたが、コードは小さなファイルで問題なく動作します。しかし、CSV ファイルがその 14 回目の呼び出しを通過するのに十分な大きさである場合、それはハングするだけであり、読み取る必要があるにもかかわらず、それ以上読み取ることができないようになります。そして、 stream.on("close") が呼び出されることはありません。
明らかに、これはかなり奇妙な動作です。誰かがこのライブラリを使用して似たようなことに遭遇し、何らかのガイダンスが得られることを望んでいました。
それがまったく役立つ場合は、ここにいくつかのコードがあります
sftp.get(currentFileName).then((readStream) => {
var counter = 0;
readStream.on("data", function(d) {
counter++;
console.log("counter = " + counter);
});
readStream.on("close", function(err) {
if (err) {
console.error("Problem with read stream for file " + currentFileName + ", error = ", err);
}
//done reading the individual file, all went well
else {
console.log("done reading the stream");
}
});
readStream.on('error', function(e){
console.error("Error retrieving file: " + e);
})
readStream.resume();
readStream.on("data") への 14 回目の呼び出しの後、フリーズします。おそらく半分のファイルが読み取られます。