2016-07-31 56 views
0

從網上讀取csv文件時出現問題。我得到一個文件未找到異常。這是來源:http://data.okfn.org/data/core/s-and-p-500-companies/r/constituents.csv 如果我可以輕鬆打開它,那麼該文件怎麼可能找不到?我在這裏錯過了什麼?從csv文件讀取數據 - 找不到有效源的文件例外

package Investing; 


import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

public class Main { 

    public static void main(String[] args) { 

    String csvFile = "http://data.okfn.org/data/core/s-and-p-500-  companies/r/constituents.csv"; 
    String line = ""; 
    String cvsSplitBy = ","; 


    try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { 

     while ((line = br.readLine()) != null) { 

      // use comma as separator 
      String[] data = line.split(cvsSplitBy); 

      System.out.println(data); 

     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


} 
} 
+0

下載該文件拖到本地手動再使用的FileReader。 – SMA

+0

@SMA文件的內容可能會更改,這就是爲什麼我想直接從網頁讀取數據的原因。有沒有這樣做的選擇? – Niminim

+1

那麼你最好從URL讀取或下載文件,然後閱讀文件。 – SMA

回答

1

FileReader用於本地文件。 請參閱:Read remote .csv file using opencsv用於讀取遠程CVS文件。

另一種替代以讀取遠程文件:

public static void main(String[] args) { 

    String csvFile = "http://data.okfn.org/data/core/s-and-p-500-companies/r/constituents.csv"; 

    try { 
     URL url12 = new URL(csvFile); 
     URLConnection urlConn = url12.openConnection(); 
     InputStreamReader inStream = new InputStreamReader(urlConn.getInputStream()); 
     BufferedReader buff = new BufferedReader(inStream); 

     String line = buff.readLine(); 
     line = buff.readLine(); 
     while (line != null) { 

      System.out.println(line); 
      line = buff.readLine(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 
+0

是的,我知道。我使用了該代碼並稍微改變了一下。 – Niminim

+0

打開連接和獲取inputStream,打開流並使用csvreader類(如發佈的鏈接)有什麼區別?我想這裏描述的方式是一般的,另一個支持CSV文件,但使用csvReader類有什麼好處?爲了什麼目的csvReader是好的? – Niminim

+0

恐怕我無法回答,但可以自由發表新的問題。 – c0der