gpt4 book ai didi

java - aws s3 java sdk 下载 pdf 损坏

转载 作者:行者123 更新时间:2023-11-30 09:49:45 24 4
gpt4 key购买 nike

我正在使用 getObject api 从 aws s3 下载文件。简单的文本文件工作正常,但在下载 pdf 时我的文件已损坏。我正在使用 FileOutputStream 并将内容保存在文件中,但保存的 pdf 已损坏。

我不太确定用于此目的的正确 java api 以及读取字节的字节数组的大小应该是多少。

我也很好奇直接使用 SDK 是否有意义,或者是否有可用的 Java 开源包装器 API 可供我利用。

FileOutputStream fout = new FileOutputStream(new File(destFileName));

 byte[] b = new byte[8192];
int bytesRead;
while (true) {
bytesRead = input.read(b);
System.out.println("bytesRead = "+bytesRead );
if (bytesRead==-1)
break;
fout.write(b);
}
fout.flush();
fout.close();

最佳答案

老实说,我敢打赌问题出在您将整个缓冲区写入FileOutputStream。在传输结束时,缓冲区不会完全填满/被覆盖,您最终会将一些字节写入文件末尾,这些字节是上次读取时遗留下来的。您需要修改此代码以仅写入实际从输入流中读取的字节数,而不是整个缓冲区。

代替

fout.write(b);

尝试

fout.write(b, 0, bytesRead);

这样,如果您在上次读取期间只读取了 100 个字节,则您只写入缓冲区的前 100 个字节,而忽略实际上已经写入文件的剩余 8092 个字节。

关于java - aws s3 java sdk 下载 pdf 损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616014/

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