我的目标是将FTP页面上的.txt文件转换为简单的String
,以便于操作。
特定的.txt文件位于:ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt。这是一个匿名的FTP页面,因此当我使用计算机的浏览器时,不需要用户名或密码。
我尝试合并以下来源的不同代码和提示:
我上面尝试的所有内容都没有帮助。我不太确定我做错了什么。
要清楚,我想要做的就是从发布的.txt文件中获取纯文本。我没兴趣将所述文件下载到我设备的内存中。
如果您可以逐步解释如何执行此操作,我将非常感激。
答案 0 :(得分:1)
确定。我得到了它。对于那些在同一条船上的人,一步一步的答案如下:
其他用户遇到的很多问题可以通过在清单中启用互联网权限来解决,但我的更复杂一点。事实证明,主要的诀窍是不在ftp://
的地址中包含Java
。*此外,当您进入FTP站点时,请确保通过 root 进入页面,所以ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt的原始页面变为:ftp.nasdaqtrader.com。
确保在项目中下载并包含正确的Apache Commons库(此处:http://commons.apache.org/proper/commons-net/download_net.cgi)。
连接到根页面:
FTPClient ftpClient = new FTPClient();
ftpClient.connect("ftp.nasdaqtrader.com");
匿名登录,在这种情况下,用户名和密码都是"匿名"。许多FTP页面可能就是这种情况,但我无法确定:
ftpClient.login("anonymous", "anonymous");
然后,转到正确的目录(注意包括/排除斜杠):
ftpClient.changeWorkingDirectory("/SymbolDirectory");
最后!您现在可以从发布的文本文件中获取InputStream
:
InputStream is = new BufferedInputStream(ftpClient.retrieveFileStream("nasdaqlisted.txt"));
然后,将InputStream
转换为String
并根据需要进行操作。有很多方法可以做到这一点。其中一个可以在这里找到:How can I convert InputStream data to String in Android SOAP Webservices
答案 1 :(得分:0)
如果你得到“425无法建立数据连接:连接超时”错误,那么在连接到ftp服务器之后,我建议你通过以下语句将本地模式设置为被动模式。
ftpClient.enterLocalPassiveMode();