【发布时间】:2020-03-03 21:31:09
【问题描述】:
当我们知道数据的大小时,有没有更快的方法从输入流中读取? 我的这段代码很慢:
File file = new File("file.jar");
if(!file.exists)file.createNewFile();
String url = "https://launcher.mojang.com/v1/objects/3870888a6c3d349d3771a3e9d16c9bf5e076b908/client.jar";
int len = 8461484;
InputStream is = new URL(url).openStream();
if(!file.exists())
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
for(long i = 0;i < len;i ++) {
writer.write(is.read());
writer.flush();
System.out.println(i);
}
writer.close();
【问题讨论】:
-
不要逐字节读取。使用缓冲区。
-
带缓冲阅读器?
-
不过需要很多回忆
-
另外,在每个
write之后显式刷新也无济于事。 -
Readers 和 Writers 用于文本文件。我看到您正在从 InputStream 中读取;你确定这是一个文本文件吗?您确定此文本文件与您的作者的文本格式(即 ascii、latin-1、utf-8、utf-16 等)相同吗?
标签: java inputstream