gpt4 book ai didi

android - 如何将潜在巨大的 InputStream 写入文件?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:35 25 4
gpt4 key购买 nike

我有一个返回字节数组的 API 调用。我目前将结果流式传输到一个字节数组中,然后确保校验和匹配,然后将 ByteArrayOutputStream 写入文件。代码是这样的,它工作得很好。

    String path = "file.txt";
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
FileOutputStream stream = new FileOutputStream(path);
stream.write(byteBuffer.toByteArray());

我担心输入流的结果可能会大于 android 中的堆大小,如果整个字节数组都在内存中,我可能会遇到 OutOfMemory 异常。以 block 的形式将 inputStream 写入文件的最优雅方式是什么,这样字节数组永远不会大于堆大小?

最佳答案

不要写入 ByteArrayOutputStream。直接写入 FileOutputStream

String path = "file.txt";
FileOutputStream output = new FileOutputStream(path);
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
output.write(buffer, 0, len);
}

关于android - 如何将潜在巨大的 InputStream 写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910706/

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