【发布时间】:2014-08-29 10:13:17
【问题描述】:
我正在尝试使用 Java.net.* 库来访问 FTP 文件。我要做的是为此文件初始化一个 InputStream:
ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqlisted.txt
为什么这段代码不起作用?我不断收到 IOException。
private static void downloadNasdaqList(){
String nasdaqURL = "ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqlisted.txt";
try {
openFTP(new URL(nasdaqURL));
} catch (IOException ex) {
Logger.getLogger(PADailyQuotes.class.getName()).log(Level.SEVERE, null, ex);
}
}
private static void openFTP (URL website){
try{
URLConnection urlc = website.openConnection();
InputStream is = urlc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
}
catch (MalformedURLException MUE){
System.out.println("ERROR: openFTP- Invalid URL");
System.exit(2);
}
catch (IOException IOE){
System.out.println("ERROR: openFTP - Unable to establish connection");
System.exit(3);
}
}
权限有问题吗?我不这么认为,因为我们只需将 URL 复制并粘贴到浏览器中即可访问该页面。
另外,如果我有兴趣使用 org.apache.commons.net.ftp.FTP 和 org.apache.commons.net.ftp.FTPClient 库,就像他们在这里做的那样:
http://codejava.net/java-se/networking/ftp/java-ftp-file-download-tutorial-and-example
对于我提供的文件,我应该为 connect() 方法的服务器和端口以及 login() 方法的用户名和密码输入什么? (这是假设我链接的 ftp 文件确实是公开的,并且我没有给定的用户名或密码。)
如果这是一个愚蠢或重复的问题,请提前道歉。我使用了搜索功能,并尽我所能关注了另一个 StackOverflow 线程;但是,我的代码仍然无法正常工作。感谢阅读。
编辑:具体的例外是
2014 年 7 月 8 日上午 8:35:03 pa.dailyquotes.PADailyQuotes openFTP 严重: null java.net.ConnectException:连接超时:连接在 java.net.DualStackPlainSocketImpl.connect0(Native Method) 在 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)...
线程“main”中的异常 java.lang.NullPointerException 在 pa.dailyquotes.PADailyQuotes.downloadNasdaqList (PADailyQuotes.java:67) 在 pa.dailyquotes.PADailyQuotes.main(PADailyQuotes.java:25)
第 67 行是
br.readLine(); //跳过第一行
br 是一个未通过上述方法正确初始化的 BufferedReader。
【问题讨论】:
-
将 IOException 复制到您的问题中。
-
你说它在浏览器中工作;那么该浏览器是否有任何特定设置,例如代理服务器?
-
@Gimby 你们扔了这么多技术术语,我需要一两天的时间来研究所有内容!哈哈哈……就是一个普通的网页浏览器,默认设置。适用于 Chrome、Opera、Firefox 等。我只是假设如果您可以通过 Web 浏览器评估某些内容,那么一定有一种方法可以使用 Java/Java 库访问这些内容。