2017-09-21 54 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是必需的 –