我有一个Java软件,它要求雅虎财务的当前和历史股票价格。Java扫描器不读取特定文件
正如其他文章所述,雅虎可以将价格写入一个文件中,这个文件可以被扫描器读取。 要请求亚马逊目前的价格我打电话: http://finance.yahoo.com/d/quotes.csv?s=AMZ.DE&f=snl1t1c4
要请求亚马逊的价格在过去的5年里,我呼吁: http://ichart.finance.yahoo.com/table.csv?s=AMZ.DE&d=3&e=20&f=2017&a=3&b=20&c=2012&g=d&ignore=.cvs
如果我访问我的浏览器这两个环节,它的下载为.csv文件中包含他们每个人的预期数据。
在java中相应.csv文件应由folling方法被读取:
private static List<String> requestStockData(String request) throws IOException {
Scanner scanner = null;
List<String> answer = new ArrayList();
try {
scanner = new Scanner(new URL(request).openStream());//no exception here
} catch (FileNotFoundException e) {
Tools.printDebugMessage("Received null-answer for request " + request);
return answer;
}
while (scanner.hasNextLine()) {//scanner.hasNextLine() returns false
String value = scanner.nextLine();
answer.add(value);
Tools.printDebugMessage("received answer from YAHOO! Finance: " + value);
}
scanner.close();
return answer;
}
其中请求是上面的链接中的一个。
我正在使用这个软件几个星期,它的工作完美。 但最后一天它不再适用于历史数据,但它对当前数据正常工作。
使用指向历史数据的链接,扫描程序将正常打开并且不会抛出异常,但scanner.hasNextLine()将立即返回false,但通过浏览器下载的.csv文件有1305行。
您是否有人理解为什么扫描仪不再接受历史数据的.csv文件,但接受当前的数据?