gpt4 book ai didi

java - 处理大型二进制文件,流式传输到存储

转载 作者:行者123 更新时间:2023-11-29 03:35:24 24 4
gpt4 key购买 nike

我正在使用 Odata4j,我的实体有一个 Data 字段,它是一个二进制文件。通过浏览器查看时,它显示为 Base64 字符串。

我怎样才能将这个文件放到我的 Android 设备上?

我尝试了以下方法来获取 byte[]...

String stringData = entity.getProperty("Data").getValue().toString();
byte[] data = Base64.decodeBase64(stringData);

但这只是给我一个大约 7 个字节的小数组。但是,当我调试时,我可以看到 entity 数据有一个很大的二进制值。

我还有一个问题是第二个文件产生“内存不足”异常,理想情况下我希望能够将此文件作为流/缓冲区直接下载到设备的存储空间,这可能吗?

明确地说,问题是:如何将这些数据直接流式传输到设备的存储空间?

最佳答案

我在没有使用 OData 的情况下解决了这个问题。有一个 URL 可用,它将只返回二进制数据。因此,通过这个 URL,我可以使用其他 Java 类将数据直接流式传输到磁盘。

因此使用此 URL:

www.example.com/OData.svc/File/Data/$value

(只返回二进制数据)

我们可以创建一个 URL 连接并下载它:

URL url = new URL(webPage);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

File file = new File(dir, fileName);//need to create a file based on your storage paths

FileOutputStream out = new FileOutputStream(file);
InputStream in = urlConnection.getInputStream();

byte[] buffer = new byte[1024];
int i = 0;
while ((i = in.read(buffer)) > 0) {
out.write(buffer, 0, i);
}

out.flush();
out.close();
in.close();

关于java - 处理大型二进制文件,流式传输到存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837795/

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