2013-10-12 76 views
0

我正在嘗試在我的java程序中讀取一個cdv文件,並將其寫入eclipse中的mac中。當我從計算機上的目錄中讀取文件時,這很好,但我想從網上讀取一個csv文件(我的情況是Yahoo Finance)。這在PC上完美運行,所以它可能與Mac相關。我測試了幾個不同的選項,使用反斜槓,多個反斜槓等,但我無法得到它的工作,所以我轉向你在這裏聰明的人。加載遠程URL時出現java.io.FileNotFoundException錯誤

這是我的代碼:

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! 

回答

2

您不能使用FileReader從遠程URL獲取內容。

您可以使用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。你會在每個平臺上得到同樣的錯誤。

+0

你確定這是UTF-8? – hexafraction

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())); 
+0

非常感謝,現在工作正常。 – user2873939

相關問題