我使用Java I / O是一件非常新的事情,因为我以前没有这么做过,并且已经写过这个来从www.kissanime.com下载.mp4文件。
目前下载非常非常慢(大约70-100kb / s),并且想知道如何加快速度。我不太了解字节缓冲,所以对此有任何帮助将不胜感激。这可能是我的问题,我不确定。
这是我的代码:
protected static boolean downloadFile(URL source, File dest) {
try {
URLConnection urlConn = source.openConnection();
urlConn.setConnectTimeout(1000);
urlConn.setReadTimeout(5000);
InputStream in = urlConn.getInputStream();
FileOutputStream out = new FileOutputStream(dest);
BufferedOutputStream bout = new BufferedOutputStream(out);
int fileSize = urlConn.getContentLength();
byte[] b = new byte[65536];
int bytesDownloaded = 0, len;
while ((len = in.read(b)) != -1 && bytesDownloaded < fileSize) {
bout.write(b, 0, len);
bytesDownloaded += len;
// System.out.println((double) bytesDownloaded / 1000000.0 + "mb/" + (double) fileSize / 1000000.0 + "mb");
}
bout.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
感谢。任何进一步的信息将根据要求提供。
我在这里找不到与下载媒体文件有关的任何问题,如果这被视为重复,我很抱歉。
答案 0 :(得分:0)
尝试使用IOUtils.toByteArray,它需要一个输入流并返回一个包含所有字节的数组,在我看来,检查常见的实用程序包如apache-commons和guava通常是一个好主意,看看你是不是试图做还没有完成
答案 1 :(得分:0)
如果要从InputStream保存文件,请使用apache-commons的这种方法 FileUtils.copyInputStreamToFile()
public static void copyInputStreamToFile(InputStream source,
File destination)
throws IOException
将InputStream源中的字节复制到文件目标。如果它们不存在,将创建到目的地的目录。目标将被覆盖,如果它已经存在。源流已关闭。
如果可用的话,总是使用文件和IO相关的东西。还有一些其他可用的实用方法&amp;你可以探索。
答案 2 :(得分:0)
事实证明,链接中的大量重定向导致下载速度受到限制。谢谢所有回答的人。