当我尝试从服务器下载文件时,它错过了一些字节!并显示为已损坏的文件。在我试图从URL下载的代码下面。跑步时没有例外。我在服务中使用它。 以下是我尝试的示例结果:
文件1: 实际尺寸= 73.2 kb 已下载尺寸= 68.7 kb
文件2: 实际尺寸= 147 kb 下载大小= 137 kb
文件3: 实际尺寸= 125 kb 已下载尺寸= 116.8 kb
请帮我找到代码所需的更正。 感谢,
InputStream stream = null;
FileOutputStream fos = null;
try {
URL url = new URL(urlPath);
stream = url.openConnection().getInputStream();
InputStreamReader reader = new InputStreamReader(stream);
fos = new FileOutputStream(output.getPath());
int next = -1;
while ((next = reader.read()) != -1) {
fos.write(next);
}
// Successful finished
Log.d("reaching", "reaching : DOWNLOAD FINISHED SUCCESSFULLY");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
是的,问题在于使用InputstreamReader 我使用InputStream而不是@EJP说的那样。我修改了我的代码以从服务器下载文件
我在这里为接触此链接的人提供我的代码。对他们有帮助。
try {
URL url = new URL(urlPath);
URLConnection conexion = url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
Log.d("download", "Lenght of file: " + lenghtOfFile);
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()+"/"+fileName);
byte data[] = new byte[1024];
int count= -1;
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {}