gpt4 book ai didi

java - getResourceAsStream 返回 HttpInputStream,而不是整个文件

转载 作者:行者123 更新时间:2023-12-01 19:23:13 25 4
gpt4 key购买 nike

我有一个带有小程序的网络应用程序,它将用小程序打包的文件复制到客户端计算机。

当我将其部署到网络服务器并使用:InputStream in = getClass().getResourceAsStream("filename") ;

对于我尝试过的每个文件,in.available() 总是返回 8192 字节的大小,这意味着该文件在复制到客户端计算机时已损坏。

InputStream 的类型为 HttpInputStream (sun.net.protocol.http.HttpUrlConnection$httpInputStream)。但是,当我在小程序查看器中测试小程序时,文件复制得很好,返回的输入流是 BufferedInputStream 类型,它具有文件的字节大小。我猜想当文件系统中的 getResourceStream 时将使用 BufferedInputStream,而在 http 协议(protocol)时将使用 HttpInputStream。

如何完整复制文件,HttpInputStream 有大小限制吗?多谢。

最佳答案

in.available() 告诉您可以在不阻塞的情况下读取多少字节,而不是可以从流中读取的总字节数。

以下是将 InputStreamorg.apache.commons.io.IOUtils 复制到 OutputStream 的示例:

public static long copyLarge(InputStream input, OutputStream output)
throws IOException {
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
long count = 0;
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}

关于java - getResourceAsStream 返回 HttpInputStream,而不是整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870769/

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