Android 部分下载 http
Android partial download http
在我的应用程序中,我通过 HTTP 连接从服务器下载媒体。下载时如果连接断开(例如,没有 n/w,权限被撤销),文件将被部分下载。
之前我们是删除文件,从头开始下载。
现在,要求发生了变化。我必须从我离开的地方继续(就像在 WhatsApp 中一样)。
所以我正在做的是检查文件是否存在,如果文件存在则跳过流。请找到下面的代码片段。
InputStream is = con.getInputStream();
File file = new File(targetPath);
boolean fileExist = file.exists();
if (fileExist) {
long skippedBytes = is.skip(file.length());
}
// opens an output stream to save into file
OutputStream os = new FileOutputStream(targetPath, fileExist);
它只是在跳过方面起作用,但实际上不起作用。
例如,文件(视频)长度为 20 秒,第一次尝试我下载了 6 秒,随后休息。但是当我播放它时,它只播放到 6 秒,然后抛出通常的视频播放错误。
File file = new File(targetPath);
if (file.exists()) {
con.setRequestProperty("Range", "bytes=" + (file.length()) + "-");
} else {
con.setRequestProperty("Range", "bytes=" + 0 + "-");
}
在我的应用程序中,我通过 HTTP 连接从服务器下载媒体。下载时如果连接断开(例如,没有 n/w,权限被撤销),文件将被部分下载。
之前我们是删除文件,从头开始下载。
现在,要求发生了变化。我必须从我离开的地方继续(就像在 WhatsApp 中一样)。
所以我正在做的是检查文件是否存在,如果文件存在则跳过流。请找到下面的代码片段。
InputStream is = con.getInputStream();
File file = new File(targetPath);
boolean fileExist = file.exists();
if (fileExist) {
long skippedBytes = is.skip(file.length());
}
// opens an output stream to save into file
OutputStream os = new FileOutputStream(targetPath, fileExist);
它只是在跳过方面起作用,但实际上不起作用。
例如,文件(视频)长度为 20 秒,第一次尝试我下载了 6 秒,随后休息。但是当我播放它时,它只播放到 6 秒,然后抛出通常的视频播放错误。
File file = new File(targetPath);
if (file.exists()) {
con.setRequestProperty("Range", "bytes=" + (file.length()) + "-");
} else {
con.setRequestProperty("Range", "bytes=" + 0 + "-");
}