2017-04-07 15 views
0

.docxファイルをバイト配列に読み込みましたが、.docxファイルに再度保存しようとしたときにファイルを開くことができませんでした。Javaはバイト配列から.docxファイルを作成します

誰でも理由を説明できますか?

public static void main(String[] args) throws IOException { 
    byte[] data = readFile("test.docx"); 
    System.out.println(data.length); 

    try (FileOutputStream fos = new FileOutputStream("testCopy.docx")) { 
     fos.write(data); 
    } 
} 

そしてここreadFileの方法

public static byte[] readFile(String filePath) throws FileNotFoundException, IOException { 
    File file = new File(filePath); 
    byte[] bytes = new byte[(int) file.length()]; 
    try (DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)))) { 
     dataInputStream.readFully(bytes); 
    } 

    return bytes; 
} 

答えて

0

は、おそらくのDataInputStreamとFileInputStreamの間の差になるはずです。

DataInputStreamではなくFileInputStreamを使用して、その動作を確認してください。

try (FileInputStream fileInputStream = new FileInputStream(filePath)) { 
      fileInputStream.read(bytes); 
} 
+0

これは問題を解決します。ありがとうございました。 – Ibrahim

+0

@Ibrahimまた、バイト配列をこのように初期化することをお勧めします:byte [] bytes = new byte [fileInputStream.available()];ドキュメントから: "読み取ることができる残りのバイト数の見積もりを返します" – Cargeh

関連する問題