gpt4 book ai didi

java - 如何逐字节复制二进制文件

转载 作者:行者123 更新时间:2023-11-30 04:12:34 27 4
gpt4 key购买 nike

我目前正在尝试解决一个用Java读写文件的问题。

所以任务是,我直接获取我想要读取的文件的InputStream对象(我没有实际的文件,只有InputStream对象),并从这个对象中我想重新创建原始文件。

我试图从文件中逐字节读取数据并将其写入另一个文件中。

但它仅适用于 .txt 文件,不适用于 doc、docx、PDF 文件。我还没有检查其余的非 .txt 格式,但我希望它适用于所有格式。

对于非 txt 格式,文件正在生成,但其中的内容不可见。

所以我的问题是如何仅使用 InputStream 对象为所有类型的文件格式重新创建文件。

下面是我用来编写该文件的示例代码。

    File file = new File("/home/sumit/Documents/newAbc.docx");
File fileAbc = new File("/home/sumit/Documents/abc.docx");
InputStream inputStream = new FileInputStream(fileAbc); // this is just for this sample code snippet but orginally I already have InputStream object.
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}

FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);

int data = inputStream.read();
while(data != -1) {
//do something with data...
bw.write(data);
data = inputStream.read();

}
inputStream.close();
bw.close();

上面的代码已正确编译和执行,但创建的文件未正确显示内容。

搜索时我发现我无法直接从这里阅读Doc、PDF等:Reading .docx file in java

但来自http://poi.apache.org/ POI 库我没有找到任何可以告诉我如何使用 InputStream 写入文件的内容。

有谁知道如何解决上述问题吗?

最佳答案

*Writer 类用于文本上下文,并根据某种编码(默认情况下为标准平台编码)进行转换。因此,您希望使用 FileOutputStream 而不是 FileWriter 来写入二进制文件格式。

此外,您最终会希望使用byte[]缓冲区进行读取和写入以达到优化目的。

关于java - 如何逐字节复制二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19266304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com