Android中的FTP下载速度非常慢(仅Java中的速度很快)
我正在从FTP服务器下载MP3文件。它适用于Android应用程序,该应用程序将下载并播放MP3文件。下载是使用ApacheCommons库在Java中实现的,代码主要基于另一个教程。在我运行Java的桌面上,下载速度非常快,下载一个10mb的文件大约需要5秒钟,但在Android设备上运行的相同代码(我尝试了2个)上,下载相同文件的速度要慢得可笑,需要5-10分钟。(两项测试都是通过Wifi进行的) 代码基于: 下面的代码显示了使用的两种方法:连接和下载Android中的FTP下载速度非常慢(仅Java中的速度很快),java,android,apache,apache-commons,ftp-client,Java,Android,Apache,Apache Commons,Ftp Client,我正在从FTP服务器下载MP3文件。它适用于Android应用程序,该应用程序将下载并播放MP3文件。下载是使用ApacheCommons库在Java中实现的,代码主要基于另一个教程。在我运行Java的桌面上,下载速度非常快,下载一个10mb的文件大约需要5秒钟,但在Android设备上运行的相同代码(我尝试了2个)上,下载相同文件的速度要慢得可笑,需要5-10分钟。(两项测试都是通过Wifi进行的) 代码基于: 下面的代码显示了使用的两种方法:连接和下载 public boolean
public boolean connect(String host, String username, String pass, int port){
try{
mFTPClient.connect(host, port);
if(FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
boolean loginStatus = mFTPClient.login(username, pass);
mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
mFTPClient.enterLocalPassiveMode();
mFTPClient.setKeepAlive(true);
return loginStatus;
}
} catch (Exception e){
System.err.println("Error: Could not connect to: " + host);
e.printStackTrace();
}
return false;
}
public boolean download(String srcFilePath, String dstFilePath) {
boolean downloadStatus = false;
try {
FileOutputStream dstFileStream = new FileOutputStream(dstFilePath);
downloadStatus = mFTPClient.retrieveFile(srcFilePath, dstFileStream);
dstFileStream.close();
return downloadStatus;
} catch (Exception e) {
System.err.println("Error: Failed to download file from " + srcFilePath + " to " + dstFilePath);
}
return downloadStatus;
}
希望我已经提到了所需的所有细节,如果有人能解释一下为什么下载速度会慢得多,以及我如何在合理的时间内下载它,我将不胜感激。遇到了一个类似的问题,通过更改下载缓冲区大小解决了这个问题 奇怪的是,同样的代码在Android仿真器x86上运行得非常快,但在真正的设备上运行得非常慢
因此,在调用下载函数检索文件之前 添加一行如下所示:
mFTPClient.setBufferSize(1024*1024);
mFTPClient.setBufferSize(1024*1024);
因此,在调用下载函数
retrieveFile
之前,请添加如下行:
mFTPClient.setBufferSize(1024*1024);
mFTPClient.setBufferSize(1024*1024);
这是正确的解决方案。我的应用程序在20分钟内下载10个文件很慢。修改缓冲区需要1分钟。
和蔼的非常感谢。您是否比较了speedtest.net桌面版和移动版的测试结果?我在家里有一个Wi-Fi网络,但我从来没有从PC上下载过这么快的东西。我刚刚完成了速度测试,手机上的下载速度约为26mb,桌面上的下载速度约为29mb。然而,ping要大得多,在台式机上为23毫秒,在移动设备上为62毫秒。这可能是问题的原因吗?您的手机上是否有其他FTP客户端?如果是,结果是否具有可比性?我刚刚尝试过,而且速度很快,需要5-6秒,所以一定是应用程序而不是设备解决了这个问题,但我在使用FTP的某些设备上看到了一个真正的问题。这正是我想要的答案,谢谢老兄