我正在尝试将cdv文件读入我在mac上用eclipse编写的java程序中。当我从计算机上的目录中读取文件时,这可以正常工作,但我想从网上读取一个csv文件(在我的案例中是Yahoo Finance)。这在PC上完全正常,因此可能与Mac相关。我已经测试了一些不同的选项,使用反斜杠,多个反斜杠等但我无法使它工作,所以我转向你聪明的人在这里。
这是我的代码:
public void run() {
String csvFile = "http://ichart.finance.yahoo.com/table.csv?s=SPHS&a=05&b=9&c=2013&d=09&e=12&f=2013&g=d&ignore=.csv";
System.out.println(csvFile);
BufferedReader br = null;
String line = "";
String csvSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] output = line.split(csvSplitBy);
System.out.println("On "+output[0]+" Closing price was: "+output[6]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done!");
}
这是我得到的错误和输出:
http:\\ichart.finance.yahoo.com\table.csv?s=SPHS&a=05&b=9&c=2013&d=09&e=12&f=2013&g=d&ignore=.csv
java.io.FileNotFoundException: http:\\ichart.finance.yahoo.com\table.csv?s=SPHS&a=05&b=9&c=2013&d=09&e=12&f=2013&g=d&ignore=.csv (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at java.io.FileReader.<init>(FileReader.java:41)
at ReadCSV.ReadCSV.run(ReadCSV.java:28)
at ReadCSV.ReadCSV.main(ReadCSV.java:13)
Done!
答案 0 :(得分:2)
您无法使用FileReader
从远程网址获取内容。
您可以使用URL
类:
URL url = new URL("http://ichart.finance.yahoo.com/table.csv?s=SPHS&a=05&b=9&c=2013&d=09&e=12&f=2013&g=d&ignore=.csv");
InputStream is = url.openStream();
// Read URL's content from `is`
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
这个问题与Mac OS Eclipse无关。您将在每个平台上收到相同的错误。
答案 1 :(得分:1)
new FileReader(csvFile)
那不是本地文件。创建一个URL
对象:
URL url=new URL("http://ichart.finance.yahoo.com/table.csv?s=SPHS&a=05&b=9&c=2013&d=09&e=12&f=2013&g=d&ignore=.csv");
并加载:
br=new BufferedReader(new InputStreamReader(url.openStream()));