0
私は、csvファイルを圧縮し、ByteArrayOutputStreamからバイト配列を返すjavaコンポーネントを持っています。私はOSに書き込まれるファイル転送にこれを渡そうとしています。ファイルがOSに書き込まれますが、ファイルを開くときにそのファイルが無効であるとWindowsから報告されます。まず、ファイル転送にバイト配列を送ることは可能ですか?もしそうなら、私はおそらく私が間違ったCSVファイルの内容をビュンやっていることについて、別の質問を投稿する必要がありますと思う...バイト配列をmule ESBのアウトバウンドファイルトランスポートに渡すことができます。
ここでのJavaの抜粋です:
List<String> csvFiles = (List<String>)message.getPayload();
InputStream originalFile = null;
ByteArrayOutputStream dest = new ByteArrayOutputStream();
ZipOutputStream out = new ZipOutputStream(dest);
File temp = new File("users.csv");
originalFile = new
ByteArrayInputStream((csvFiles.get(0)).toString().getBytes());
ZipEntry entry = new ZipEntry(temp.getPath());
out.putNextEntry(entry);
int count;
while((count = originalFile.read()) != -1) {
out.write(count);
}
originalFile.close();
byte[] zipFileByteArray = dest.toByteArray();
out.close();
dest.close();
return zipFileByteArray;
はここでは関係です私の流れの一部:
<flow name="zip-csv">
<component class="edu.ucdavis.iet.canvas.ZipFiles" doc:name="Java"/>
<file:outbound-endpoint path="${message_archive.dir}" responseTimeout="10000" doc:name="save message to dir" outputPattern="temp.zip"/>
</flow>
'dest.toByteArray()'にアクセスする前に 'out.flush()'が不足していると思います。 – geert3
これはうまくいきませんでした。しかし、ありがとう。 – GarySharpe
@ geert3 @GarySharpe以前は 'out.close()'よりも 'out.flush()'があまりありませんでした。バッファフラッシング "stuff"の上で、適切なチェックサム計算を計算してフラッシュ可能にするには、ZIPストリームを閉じる必要があります。 – GPI