2013-03-20 19 views
9

Tôi đã cân nhắc điều này trong một khoảng thời gian hợp lý. Tôi đang cố gắng tải xuống dữ liệu từ Yahoo!'s Stock API. Khi bạn sử dụng API, nó cung cấp cho bạn một tệp .csv. Tôi đã nhìn vào opencsv, mà có vẻ hoàn hảo, ngoại trừ Tôi muốn tránh downloading and saving the file, nếu có thể.Đọc tệp .csv từ xa bằng cách sử dụng opencsv

OpenCSV, theo số examples, chỉ có thể đọc từ FileReader. Theo số docs on FileReader của Oracle, tệp cần phải là cục bộ.


Có thể đọc từ tệp từ xa bằng OpenCSV mà không tải xuống không?

+2

Trên thực tế, nó sử dụng một Reader chung, trong đó có một số hiện thực. Aka, bạn * không * phải sử dụng một FileReader. – Perception

Trả lời

12

CSVReader nhận một đối số Reader theo the documentation, vì vậy nó không được giới hạn trong một FileReader cho tham số.

Để sử dụng một CSVReader mà không lưu các tập tin đầu tiên, bạn có thể sử dụng một BufferedReader xung quanh một dòng tải dữ liệu:

URL stockURL = new URL("http://example.com/stock.csv"); 
BufferedReader in = new BufferedReader(new InputStreamReader(stockURL.openStream())); 
CSVReader reader = new CSVReader(in); 
// use reader 
+0

Hmm, 'StockURL'! =' StockUrl'. –

+0

@BhargavRao Cảm ơn bạn đã lưu ý điều đó, nhưng nói chung, hãy tự mình chỉnh sửa nó cho một cái gì đó như thế này! – Vulcan

+1

Đúng, tôi thường chỉnh sửa bất cứ khi nào lỗi không có trong mã. Nhưng ở đây các lỗi đánh máy đã có trong mã. Là một người học Java, tôi đã rất ngạc nhiên, khi tôi thấy rằng: D .... Đó là lý do tại sao tôi không muốn chỉnh sửa nó và để lại một bình luận. Cảm ơn bạn đã chỉnh sửa nó. Chúc mừng –