在我的第一个真正的Android应用程序上工作,其中一部分是下载管理器。
它必须下载应用用来教人Gaelic的视频文件。
除3个文件外,它可以正常工作,它可以下载更大的文件和更小的文件。但不会下载colours.mp4 1.86MB,工作日1.53 MB或数字1.99 MB所有文件介于1MB和2MB之间。
它只会在下载循环结束时停止没有错误几分钟就好像它等待继续下载然后它会给出一个错误“意外的流结束” 任何人都可以建议问题可以解决吗?
我为iPhone设置了相同的应用程序,该应用程序没有遇到与这些文件相同的问题。
这是从asynctask内部调用的下载循环。
protected void download(String where, String file){
try {
//makes output file
OutputStream output = new FileOutputStream(getFilesDir()
.getAbsolutePath() + "/vidos/" +file);
int count=0;
//gets url to download from
URL url = new URL(where);
URLConnection conection = url.openConnection();
conection.connect();
//gets the length of the file to work out percent downloaded
int lengthOfFile = conection.getContentLength();
InputStream input = null;
Log.v("downloading", String.valueOf(showprg));
input = new BufferedInputStream(url.openStream());
byte data[] = new byte[lengthOfFile];
long total = 0;
Log.v("downloading", "size: " + String.valueOf(downloading));
while ((count = input.read(data)) > 0 && downloading) {
total += count;
publishProgress(String
.valueOf((int) ((total * 100) / lengthOfFile)));
output.write(data, 0, count);
//this is where it brakes
};
Log.v("publishProgress", "done");
output.flush();
output.close();
input.close();
} catch (Exception e) {
Log.e("Error: ", e.getMessage());
}
}
答案 0 :(得分:0)
我将URLConnection更改为HttpURLConnection并删除了BufferedInputStream,现在下载没有问题。
的链接