我试图使用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:连接超时:connect at java.net.DualStackPlainSocketImpl.connect0(Native Method)at 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) at pa.dailyquotes.PADailyQuotes.main(PADailyQuotes.java:25)
第67行是
br.readLine(); //跳过第一行
br是一个未通过上述方法正确初始化的BufferedReader。
答案 0 :(得分:0)
连接超时通常意味着您无法看到服务器。检查服务器名称/ IP是否配置正确,并尝试使用标准FTP客户端从运行程序的计算机手动FTP到该服务器,以确保您可以看到它。
答案 1 :(得分:0)
您最有可能需要进行被动FTP连接,以使其通过计算机和ftp.nasdaqtrader.com之间的NAT路由器工作。
使用URLConnection无法轻松完成此操作,您需要使用专用的FTP库来执行此操作。见https://stackoverflow.com/a/2282875/53897