Java 什么';这个FTP代码怎么了?
我正在尝试使用Java.net.*库访问FTP文件。我试图做的是初始化此文件的InputStream: 为什么这个代码不起作用?我总是收到一个例外Java 什么';这个FTP代码怎么了?,java,ftp,Java,Ftp,我正在尝试使用Java.net.*库访问FTP文件。我试图做的是初始化此文件的InputStream: 为什么这个代码不起作用?我总是收到一个例外 private static void downloadNasdaqList(){ String nasdaqURL = "ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqlisted.txt"; try { openFTP(new URL(nasdaqURL));
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.ftp客户端库感兴趣,就像这里一样:
对于我提供的文件,connect()方法的server和port以及login()方法的用户名和密码应该是什么?(这是假设我链接的ftp文件确实是公共文件,并且我没有给定的用户名或密码。)
如果这是一个愚蠢或重复的问题,请提前道歉。我使用了搜索功能,并尽我所能跟踪其他StackOverflow线程;但是,我的代码仍然不起作用。谢谢你的阅读
编辑:特定的异常是
2014年7月8日上午8:35:03宾夕法尼亚州dailyquotes.PADailyQuotes开放FTP严重:
null java.net.ConnectException:连接超时:连接在
java.net.DualStackPlainSocketImpl.connect0(本机方法)位于
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。连接超时通常意味着您无法看到服务器。检查服务器名称/IP配置是否正确,并尝试使用标准FTP客户端从运行该程序的计算机手动FTPing到该服务器,以确保您可以看到它。您很可能需要进行被动FTP连接,以使其通过计算机和FTP.nasdaqtrader.com之间的NAT路由器工作
使用URLConnection很难做到这一点,您需要使用专用的FTP库来做到这一点。请参见将IOException复制到您的问题中。您说它在浏览器中工作;那个么,那个浏览器有并没有像代理服务器那个样的特定设置?@Gimby你们这些家伙抛出了这么多的技术术语,我要花一两天的时间来研究所有东西!哈哈哈。。。它只是一个带有默认设置的普通web浏览器。适用于Chrome、Opera、Firefox等。我只是假设,如果您可以通过web浏览器评估某些内容,那么一定有一种方法可以通过Java/Java库访问这些内容。我最终使用了Apache库,如我的OP教程中所述。对于FTPClient login()方法的用户名和密码,我使用了“匿名”还有我的电子邮件地址。事实证明,这是公开访问FTP文件的常见登录凭据。谢谢大家!