我在任何地方都找不到文件的简单 FTP 访问示例,并且 FTPClient 类(有几个示例使用)没有出现在 Android 类索引中。我有 http 访问权限,但我如何进行简单的 FTP 获取?我只想下载(例如): ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/KABQ.TXT 它不应该需要登录、更改目录等。 仅将该 URL 提供给 http 访问方法似乎不起作用。
这类似于以下问题: unable to read file from ftp in android?
我尝试了一个简单的:
StringBuilder response = new StringBuilder();
URLConnection ftpConn;
try {
URL netUrl = new URL("ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/KABQ.TXT");
ftpConn = netUrl.openConnection();
BufferedInputStream bufRd = new BufferedInputStream(ftpConn.getInputStream());
int temp;
while ((temp = bufRd.read()) != -1) {
response.append(temp);
}
bufRd.close();
} catch (Exception e) {
return "Failure";
}
但是它在 getInputStream 上得到一个异常: 无法连接到服务器:无法配置数据端口
此外,必须有一种比逐字节提取数据更智能的方法将数据从流缓冲区中提取出来,不是吗?我也找不到。
最后,我需要同时进行 http 和 ftp 访问,有什么理由不对这两种访问类型都使用 URLConnection 吗?还是将 HttpConnection 用于 http 和 URLConnection 用于 ftp 更好?
谢谢!
最佳答案
哇!我终于搞定了。我放弃了在 webOS 和 WPF/C# 中工作的简单方法,您可以在其中执行 ftp:://...您必须使用 FTPClient 包。
修复库访问(项目 | 属性 | Java 构建路径 | 库 | 添加 JAR...)后,我摆弄了这些调用,直到它开始工作。这是我的 FTPClient 调用的顺序。在我将它设置为被动模式之前它不会工作。
mFTPClient = new FTPClient();
mFTPClient.connect("tgftp.nws.noaa.gov");
mFTPClient.login("anonymous","nobody");
mFTPClient.enterLocalPassiveMode();
mFTPClient.changeWorkingDirectory("/data/forecasts/taf/stations");
InputStream inStream = mFTPClient.retrieveFileStream("KABQ.TXT");
InputStreamReader isr = new InputStreamReader(inStream, "UTF8");
关于android - 如何在 Android 上做一个简单的 ftp 获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053513/