Java bufferedReader仅读取本地csv文件

Java bufferedReader仅读取本地csv文件,java,bufferedreader,filereader,Java,Bufferedreader,Filereader,我是Java新手,我尝试使用这个类返回test.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

我是Java新手,我尝试使用这个类返回test.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:\eclipse\workspace\project\src\main\webapp\resources\csv\test .csv 至/resources/csv/test.csv

这个类得到一个空返回

有人能帮忙吗

谢谢

更新:

解决方案:

将我的CSV文件复制到项目资源文件夹:

ClassLoader classLoader = getClass().getClassLoader();
File filename = new File(classLoader.getResource("csv/test.csv").getFile());
这很棘手,资源的根路径是什么。在Eclipse中,您可以将某些文件夹(例如webapp/resource)标记为资源文件夹。当您构建jar文件时,资源文件夹内容将位于根目录中。所以,如果您从/开始资源路径,它意味着jar的根,即资源文件夹的根


我不使用相对路径,因此您可以查看以获取有关它的更多信息。

src文件夹相对于编译类所在的位置不存在,直到不在此处工作为止。还有别的想法吗?非常感谢。使用流而不是文件:CSVtoArray2.class.getResourceAsStream?文件在哪里?你在Eclipse中运行这个吗?Eclipse查看项目目录中的文件对象,了解加载文件的不同方式注意:这需要Apache commons io
org.apache.commons.io.IOUtils.toString(CSVtoArray2.class.getResourceAsStream("/csv/test.csv"), Charset.forName("UTF-8")))