Java从字节数组创建.docx文件

Java从字节数组创建.docx文件,java,Java,我将.docx文件读取到字节数组,但当我再次尝试将其保存到.docx文件时,该文件无法打开 有人能解释为什么吗 public static void main(String[] args) throws IOException { byte[] data = readFile("test.docx"); System.out.println(data.length); try (FileOutputStream fos = new FileOutputStream("t

我将.docx文件读取到字节数组,但当我再次尝试将其保存到.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;
}

您可能应该研究DataInputStream和FileInputStream之间的区别

尝试使用FileInputStream而不是DataInputStream,看看它是如何工作的

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

@Ibrahim同样,用这种方式初始化字节数组可能是个好主意:byte[]bytes=new byte[fileInputStream.available();从文档中:“返回可读取的剩余字节数的估计值”