2017-09-21 58 views
0

我是新來的Java和我試圖用這個類來返回「test.csv」的內容。這隻適用於當我使用本地文件的路徑。bufferedReader只讀本地csv文件

public class CSVtoArray2 { 

    public static final String filename = "C:\\eclipse\\workspace\\project\\src\\main\\webapp\\resources\\csv\\test.csv"; 


    public String testMethod() throws IOException { 
     BufferedReader wr = null; 

     try { 

      wr = new BufferedReader(new FileReader(new File(filename))); 

      StringBuffer stringBuffer = new StringBuffer(); 
      String line; 
      while ((line = wr.readLine()) != null) { 
       stringBuffer.append(line); 
       stringBuffer.append("\n"); 
      } 
      wr.close(); 
      return stringBuffer.toString(); 
     } finally { 
      wr.close(); 
     } 
    } 
} 

當我改變

「C:\日食\工作區\項目的\ src \主\ web應用程序\資源\ CSV \測試 的.csv」 爲「/resources/csv/test.csv 「,

該類獲得空返回。

任何人在這裏誰可以幫忙嗎?

謝謝!

UPDATE:

解決方案:

複製我的CSV文件的項目資源文件夾:

ClassLoader classLoader = getClass().getClassLoader(); 
File filename = new File(classLoader.getResource("csv/test.csv").getFile()); 
+0

'src'文件夾相對於編譯類的運行位置不存在 –

+0

仍然不能在此工作。任何其他想法?謝謝! –

+0

https://stackoverflow.com/questions/13967307/reading-from-src-main-resources-gives-nullpointerexception –

回答

1
org.apache.commons.io.IOUtils.toString(CSVtoArray2.class.getResourceAsStream("/csv/test.csv"), Charset.forName("UTF-8"))) 

這是棘手的,什麼是對資源的根路徑。在Eclipse中,您可以將某個文件夾(例如webapp/recource)標記爲資源文件夾。而當你建立jar文件時,資源文件夾的內容將在根目錄中。因此,如果您從/開始資源路徑,則表示jar的根(即資源文件夾的根目錄)

我不使用相對路徑,所以你可以看看open resource with relative path in java以獲得更多關於它的信息。

+0

注意:Apache commons io是必需的 –