[英]Load CSV in java using classpath
如何使用classpath加載csv文件? 在此之前,我嘗試使用FileReader加載文件,該文件在本地運行時工作正常,但在部署到外部服務器時會拋出FileNotFound之類的異常。 下面的代碼在本地工作,但是將jar部署在tomcat文件夾www / [jar]上時,將引發此異常。不幸的是,我無法提供原始代碼。 要點是:
BufferedReader br = new BufferedReader(new FileReader("src/SSR.csv"));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] cols = line.split(",");
map.put(cols[1],cols[0]);
您應該在這里考慮兩件事
您當前的代碼假定CSV位於工件之外FileSystem中的某個位置,這可能不是正確的,因此它將找不到該文件。
正確的方法是使用getClass().getResourceAsStream()
/ getClass().getClassLoader().getResourceAsStream()
CSV文件可能很復雜,盡管它們的結構看起來非常簡單。 因此,如果您從事的是現實生活中的項目,而不是出於學習目的進行某種家庭作業,那么我強烈建議您使用3rdparty庫來處理CSV:
...僅舉幾例
既然您用spring標記了問題,我想向您指出Spring框架提供的資源實現。 該文檔可以在以下位置找到:
對於您的csv文件,有些類似
Resource csv = context.getResource("classpath:some/resource/path/my.csv");
InputStream inputstream = csv.getInputStream();
應該是一個起點。 資源接口提供了一個
File getFile() throws IOException;
方法,但這僅在文件位於文件系統中時才起作用。 因此,對於您的情況,您應該在我認為的輸入流中使用該方法。
編輯:在這里您可以找到使用ClassPathResource https://stackoverflow.com/a/44412189/7634201的另一個答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.