gpt4 book ai didi

Java TransferFrom不会传输超过16mb?

转载 作者:行者123 更新时间:2023-12-02 07:19:41 25 4
gpt4 key购买 nike

我的 java 代码不会传输我的 25mb 文件 - 它会在 16mb 处停止。我尝试过更改transferFrom 1 << 2448 & 31 & 8没有任何帮助只会让事情变得更糟。任何想法?

ReadableByteChannel rbc = Channels.newChannel(fileURL.openStream());
FileOutputStream fos = new FileOutputStream(path + fileName);
fos.getChannel().transferFrom(rbc, 0, 1 << 24);
fos.close();

最佳答案

如果您使用Java7,您可以使用精美的java.nio.file.Files utils进行复制。

 URL url = new URL("http://www.stackoverflow.com");
try (InputStream is = url.openStream()) {
Files.copy(is, Paths.get("/tmp/output.tmp"));
}

如果您没有,您可以使用开源实用程序 - 例如来自 Apache(在 Commons IO 中搜索 FileUtils)。

如果你想坚持使用当前的解决方案,你可以这样写:

BufferedInputStream bis = new BufferedInputStream(url.openStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(
"/tmp/output2.tmp"));

byte[] buffer = new byte[1024 * 1024];
int read = 0;
while ((read = bis.read(buffer)) != -1) {
bos.write(buffer, 0, read);
}
bos.close();
bis.close();

目的是您必须读取直到到达流的末尾。这就是为什么您的 transferFrom 仅下载有限数量的数据,因为无法保证所有数据都会在一个 block 中传输。

关于Java TransferFrom不会传输超过16mb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416818/

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