我是Android编程的新手,从ftp服务器下载文件到模拟器的SD卡时出现问题。我搜索过类似的主题,并试图做每一个推荐,但没有得到解决方案。我可以毫无问题地下载文件。它们是在我的SD卡中创建的,具有我想要的确切名称,它们似乎是0字节。我有必要在我的清单文件中写外部存储,我使用apache ftp commons utilities。
这是我的连接代码
public void ConnectFTP() {
boolean status = false;
try {
mFtpClient = new FTPClient();
mFtpClient.setConnectTimeout(10 * 1000);
mFtpClient.connect(InetAddress.getByName(ip),21);
status = mFtpClient.login(userName, pass);
mFtpClient.enterLocalPassiveMode();
Log.e("isFTPConnected", String.valueOf(status));
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
这是从FTP下载文件的代码
public void downloadFTP(String FTP_file, String SD_file,String folder) {
ConnectFTP();
File dir=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/qaqc/" + folder);
dir.mkdirs();
try {
mFtpClient.changeWorkingDirectory(folder);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedOutputStream desFileStream = null;
try {
mFtpClient.enterLocalPassiveMode();
if (!mFtpClient.setFileType(FTP.BINARY_FILE_TYPE)) {
Log.e("binary", "Setting binary file type failed.");
}
desFileStream = new BufferedOutputStream(new FileOutputStream(
Environment.getExternalStorageDirectory().getAbsolutePath()+"/qaqc/"+folder+"/"+SD_file),
8 * 1024);
mFtpClient.retrieveFile("/"+FTP_file, desFileStream);
desFileStream.flush();
desFileStream.close();
mFtpClient.logout();
mFtpClient.disconnect();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
有没有任何解决方案或想法指出我正确的方向?我在这做错了什么? 谢谢。