Writerの実装を使用してExcelファイルの内容をコピーしようとすると、ファイルの内容が破損するのはなぜですか? 。FileInputStreamからFileWriterにxlsファイルをコピーするとファイルが破損する
@Test
public void testExcelCopy1() throws FileNotFoundException, IOException {
IOUtils.copy(new FileInputStream(new File("d:\\temp\\123.xls")), new OutputStreamWriter(
new FileOutputStream("d:\\temp\\1234.xls")));
Assert.assertArrayEquals(FileUtils.readFileToByteArray(new File("d:\\temp\\123.xls"))
, FileUtils.readFileToByteArray(new File("d:\\temp\\1234.xls")));
}
@Test
public void testExcelCopy2() throws FileNotFoundException, IOException {
IOUtils.copy(new FileInputStream(new File("d:\\temp\\123.xls")), new FileOutputStream("d:\\temp\\12345.xls"));
Assert.assertArrayEquals(FileUtils.readFileToByteArray(new File("d:\\temp\\123.xls"))
, FileUtils.readFileToByteArray(new File("d:\\temp\\12345.xls")));
}
私はライターの実装にはApacheポイAPIで作成したワークブックを作成する必要がでreqiurementを持っています!私はこの問題に立ち往生しています!!誰でも手伝ってもらえますか?
更新:
私はchar型のストリームにバイトストリームを変換しようとすると問題があることを理解します。しかし私は理由を知りません。
このテストにも失敗します。
@Test
public void testExcelCopy1() throws FileNotFoundException, IOException {
Reader reader = new InputStreamReader(new FileInputStream("d:\\temp\\123.xls"));
Writer write = new OutputStreamWriter(new FileOutputStream("d:\\temp\\1234.xls"));
IOUtils.copy(reader, write);
write.flush();
write.close();
Assert.assertArrayEquals(FileUtils.readFileToByteArray(new File("d:\\temp\\123.xls"))
, FileUtils.readFileToByteArray(new File("d:\\temp\\1234.xls")));
}
あなたは、文字ベースのAPI – Sanjeev
でバイナリストリームを作成しようとしているので、それは私がこれを行うことができます方法はありません意味しています! 。私はWriter実装にExcelコンテンツのバイト配列を書きたいと思っています。他の方法はありますか? 。 – Sagar
バイナリデータを書き込むには、バイナリストリームAPIを使用しなければなりません。なぜあなたはその上にリーダー/ライターの実装を置く必要があります – Sanjeev