从匿名FTP页面读取.txt文件?

时间:2015-01-21 13:13:40

标签: java android ftp text-files anonymous

我的目标是将FTP页面上的.txt文件转换为简单的String,以便于操作。

特定的.txt文件位于:ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt。这是一个匿名的FTP页面,因此当我使用计算机的浏览器时,不需要用户名或密码。

我尝试合并以下来源的不同代码和提示:

我上面尝试的所有内容都没有帮助。我不太确定我做错了什么。

要清楚,我想要做的就是从发布的.txt文件中获取纯文本。我没兴趣将所述文件下载到我设备的内存中。

如果您可以逐步解释如何执行此操作,我将非常感激。

2 个答案:

答案 0 :(得分:1)

确定。我得到了它。对于那些在同一条船上的人,一步一步的答案如下:

  1. 其他用户遇到的很多问题可以通过在清单中启用互联网权限来解决,但我的更复杂一点。事实证明,主要的诀窍是不在ftp://的地址中包含Java。*此外,当您进入FTP站点时,请确保通过 root 进入页面,所以ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt的原始页面变为:ftp.nasdaqtrader.com。

  2. 确保在项目中下载并包含正确的Apache Commons库(此处:http://commons.apache.org/proper/commons-net/download_net.cgi)。

  3. 连接到根页面:

    FTPClient ftpClient = new FTPClient();

    ftpClient.connect("ftp.nasdaqtrader.com");

  4. 匿名登录,在这种情况下,用户名和密码都是"匿名"。许多FTP页面可能就是这种情况,但我无法确定:

    ftpClient.login("anonymous", "anonymous");

  5. 然后,转到正确的目录(注意包括/排除斜杠):

    ftpClient.changeWorkingDirectory("/SymbolDirectory");

  6. 最后!您现在可以从发布的文本文件中获取InputStream

    InputStream is = new BufferedInputStream(ftpClient.retrieveFileStream("nasdaqlisted.txt"));

  7. 然后,将InputStream转换为String并根据需要进行操作。有很多方法可以做到这一点。其中一个可以在这里找到:How can I convert InputStream data to String in Android SOAP Webservices

  8. *来源:Android FTP connection Failed

答案 1 :(得分:0)

如果你得到“425无法建立数据连接:连接超时”错误,那么在连接到ftp服务器之后,我建议你通过以下语句将本地模式设置为被动模式。

ftpClient.enterLocalPassiveMode();