[求助]ftp方式下载文件问题
程序要实现的是用ftp方式从服务器端下载一个视频文件到手机上保存成文件并播放.
接收数据的代码如下:
length是文件大小
InputStream is = dataSocket.openInputStream();
byte[] data = new byte[length];
int idx = 0;
int c = 0;
while (running && c != -1) {
if (idx < length) {
c = is.read();
data[idx++] = (byte)c;
} else {
c = -1;
}
}
这样做能得到完整的文件,但这样做下载很慢,我想提升下载速度就改成了下面这样:
InputStream is = dataSocket.openInputStream();
byte[] data = new byte[length];
int idx = 0;
while (running) {
for (int i = 0; i < (length - 1) / 1024 + 1; i++) {
if (i == length / 1024) {
is.read(data, idx, length % 1024);
idx += length % 1024;
} else {
is.read(data, idx, 1024);
idx += 1024;
}
}
if (idx > = length) {
break;
}
}
可是这样得到的数据不完整,文件中会随机的少了一部分数据,导致文件不能播放,请问这是什么原因啊?代码有哪里写错了吗?希望知道的大虾指点下``先谢谢了~
------解决方案--------------------当is里数据未达到1024时...
is.read(data, idx, length % 1024);好像是可以运行的...
改成下面试试
while (running) {
idx += is.read(data, idx, length-idx);
if (idx > = length) {
break;
}
}