【发布时间】:2011-06-06 13:33:18
【问题描述】:
我最近注意到,当尝试在 Gingerbread 仿真上运行我的应用程序时,FTP 中断了。我目前正在使用 apache commons 外部库来支持 FTP,但由于某种原因,它适用于除 2.3 (Gingerbread) 之外的所有其他 Android 操作系统
这是我的 FTP 代码
FTPClient ftp = new FTPClient();
ftp.connect(SERVER);
ftp.login("anonymous", "anonymous");
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
InputStream is = ftp.retrieveFileStream("file.txt");
byte[] data = new byte[1024];
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
int x = 0;
while((x=is.read(data,0,1024))>=0){
fos.write(data,0,x);
}
fos.flush();
fos.close();
ftp.logout();
ftp.disconnect();
正如我所说,这是经过测试的,适用于 1.6、2.1 和 2.2,但不适用于 2.3。我已经尝试了一整天来弄清楚为什么以及如何解决它,但我找不到任何解决方案。
因此,我想知道是否有人对 FTP 和 Gingerbread 有经验,以及您是否愿意指导我正确的方向。
谢谢。
【问题讨论】:
-
它是否通过了身份验证?是否有任何异常被抛出?
-
您的代码适用于我的 Android 2.3.1 API 级别 9 模拟器和 commons-net-2.0.jar。也许你有一个旧版本?我使用了 FTP 站点 www.mirrorservice.org 和文件 /pub/gnu/r.README
-
什么失败了?你有堆栈跟踪吗?构建失败或运行失败?
-
似乎 FTP 确实可以在真机上运行,但不能在姜饼模拟器中运行。感谢大家的帮助!