你能给我一个提示我做错了什么吗?此代码在调用retrieveFile 后崩溃(异常e)。我正在尝试将文件从 IIS FTP(我可以成功连接到该文件)下载到 SD 卡(附加到模拟器的 .iso 文件)。文件 'test.txt' 存在于 FTP 的主目录中,并且 printWorkingDirectory() 显示“/”。我确实将权限写入清单并尝试不使用 .txt 扩展名。
try {
File file = new File(Environment.getExternalStorageDirectory(), "test2.txt");
Log.e(TAG, "1 " + Environment.getExternalStorageDirectory());
file.mkdir();
FileOutputStream desFileStream = new FileOutputStream(file);
Log.e(TAG, "2 " + Environment.getExternalStorageDirectory());
status = mFTPClient.retrieveFile("/"+"test.txt", desFileStream);
Log.e(TAG, "3");
desFileStream.close();
return status;
} catch (Exception e) {
Log.d(TAG, "download failed");
}
10-20 18:02:03.498: E/(1380): 1 /storage/sdcard
10-20 18:02:03.507: E/(1380): 2 /storage/sdcard
10-20 18:02:03.777: W /System.err(1380):java.net.ConnectException:无法连接到 /127.0.0.1(端口 63564):连接失败:ECONNREFUSED(连接被拒绝)
10-20 18:02:03.816:W/System.err( 1380): 在 libcore.io.IoBridge.connect(IoBridge.java:114)
10-20 18:02:03.816: W/System.err(1380): 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192 )
10-20 18:02:03.847: W/System.err(1380): 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
10-20 18:02:03.847: W/System.err(1380 ): 在 java.net.Socket.startupSocket(Socket.java:566)
10-20 18:02:03.867: W/System.err(1380): 在 java.net.Socket.tryAllAddresses(Socket.java:127)
10-20 18:02:03.887: W/System.err(1380): 在 java.net.Socket.(Socket.java:177)
10-20 18:02:03.917: W/System.err(1380):在 java.net.Socket.(Socket.java:149)
10-20 18:02:03.967: W/System.err(1380): 在 javax.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:40)
10-20 18:02:03.988:W/System.err(1380):在 org.apache.commons.net.ftp.FTPClient。openDataConnection (FTPClient.java:502)
10-20 18:02:04.029: W/System.err(1380): at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1276)
10-20 18:02:04.083: W/System.err(1380): 在 com.prgguru.android.FTP.ftpDownload(FTP.java:170)
10-20 18:02:04.156: W/System.err(1380):在 com.prgguru.android.Caller5.run(Caller5.java:28)
10-20 18:02:04.156: W/System.err(1380): 由: libcore.io.ErrnoException: 连接失败: ECONNREFUSED (连接被拒绝)
10-20 18:02:04.177: W/System.err( 1380):在 libcore.io.Posix.connect(本机方法)
10-20 18:02:04.177:W/System.err(1380):在 libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
10- 20 18:02:04.197: W/System.err(1380): 在 libcore.io.IoBridge.connectErrno(IoBridge.java:127)
10-20 18:02:04.197: W/System.err(1380): 在libcore.io.IoBridge.connect(IoBridge.java:112)
10-20 18:02:04.217: W/System.err(1380): ... 11 更多
10-20 18:02:04.217: E/(1380 ): 下载失败
在调用retrieveFile之前我如何连接到FTP:
public static boolean ftpConnect(String host, String username,
String password, int port) {
try {
mFTPClient = new FTPClient();
mFTPClient.connect(host, port);
if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
boolean status = mFTPClient.login(username, password);
mFTPClient.enterLocalPassiveMode();
mFTPClient.setFileTransferMode(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
return status;
}
} catch (Exception e) {
Log.d(TAG, "Error: could not connect to host " + host);
}
return false;
}
status 为数据返回 TRUE:
private static String host = "10.0.2.2";
private static String user = "MyCorrectNickname";
private static String password = "CorrectPassword";
尝试了错误的密码 - 返回错误。