从匿名 FTP 页面读取 .txt 文件?
Read a .txt file from an anonymous FTP page?
我的目标是将 FTP 页面上的 .txt 文件转换为简单的 String
以便于操作。
具体的 .txt 文件在这里:ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt。这是一个匿名 FTP 页面,所以当我使用我的计算机浏览器时,不需要用户名或密码。
我尝试合并来自以下来源的不同代码和提示:
- Reading Text File From Server on Android
- http://examples.javacodegeeks.com/core-java/apache/commons/net-commons/download-file-from-ftp-server/
- How to read a text file via FTP?
- Reading txt file from an ftp server and returning it from AsyncTask
- unable to read file from ftp in android?
- Howto do a simple ftp get file on Android
- http://www.javaworld.com/article/2073325/java-app-dev/java-ftp-client-libraries-reviewed.html
- http://developer.android.com/reference/java/net/URLConnection.html
我在上面尝试过的 None 有帮助。我不太确定我做错了什么。
明确地说,我只想从发布的 .txt 文件中获取纯文本。我没有兴趣将所述文件下载到我的设备内存中。
如果您能向我提供有关如何执行此操作的分步说明,我将不胜感激。
好的。我懂了。对于那些在同一条船上的人,一步一步的答案如下:
其他用户遇到的很多问题都可以通过在清单中打开互联网权限来解决,但我的问题要复杂一些。事实证明,主要技巧是不要在 Java
中的地址中包含 ftp://
。* 此外,当您进入 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");
匿名登录,本例用户名和密码均为"anonymous"。许多 FTP 页可能都是这种情况,但我不能确定:
ftpClient.login("anonymous", "anonymous");
然后,转到正确的目录(注意 including/excluding 斜杠):
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
*来源:Android FTP connection Failed
如果您收到“425 无法建立数据连接:连接超时”错误,那么在连接到ftp 服务器后,我建议您通过以下语句将本地模式设置为被动模式。
ftpClient.enterLocalPassiveMode();
我的目标是将 FTP 页面上的 .txt 文件转换为简单的 String
以便于操作。
具体的 .txt 文件在这里:ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt。这是一个匿名 FTP 页面,所以当我使用我的计算机浏览器时,不需要用户名或密码。
我尝试合并来自以下来源的不同代码和提示:
- Reading Text File From Server on Android
- http://examples.javacodegeeks.com/core-java/apache/commons/net-commons/download-file-from-ftp-server/
- How to read a text file via FTP?
- Reading txt file from an ftp server and returning it from AsyncTask
- unable to read file from ftp in android?
- Howto do a simple ftp get file on Android
- http://www.javaworld.com/article/2073325/java-app-dev/java-ftp-client-libraries-reviewed.html
- http://developer.android.com/reference/java/net/URLConnection.html
None 有帮助。我不太确定我做错了什么。
明确地说,我只想从发布的 .txt 文件中获取纯文本。我没有兴趣将所述文件下载到我的设备内存中。
如果您能向我提供有关如何执行此操作的分步说明,我将不胜感激。
好的。我懂了。对于那些在同一条船上的人,一步一步的答案如下:
其他用户遇到的很多问题都可以通过在清单中打开互联网权限来解决,但我的问题要复杂一些。事实证明,主要技巧是不要在
Java
中的地址中包含ftp://
。* 此外,当您进入 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");
匿名登录,本例用户名和密码均为"anonymous"。许多 FTP 页可能都是这种情况,但我不能确定:
ftpClient.login("anonymous", "anonymous");
然后,转到正确的目录(注意 including/excluding 斜杠):
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
*来源:Android FTP connection Failed
如果您收到“425 无法建立数据连接:连接超时”错误,那么在连接到ftp 服务器后,我建议您通过以下语句将本地模式设置为被动模式。
ftpClient.enterLocalPassiveMode();