bufferedReader只读取本地csv文件

时间:2017-09-21 13:35:43

标签: 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 {
        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”,

此类获得null返回。

此处有人可以提供帮助吗?

谢谢!

更新

解决方案:

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

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

1 个答案:

答案 0 :(得分:1)

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

这很棘手,资源的根路径是什么。在Eclipse中,您可以将某个文件夹(例如webapp / recource)标记为 resource 文件夹。当您构建jar文件时,资源文件夹内容将位于根目录中。因此,如果从 / 启动资源路径,则意味着 jar的根目录(即资源文件夹的根目录)

我不使用相对路径,因此您可以查看open resource with relative path in java以获取有关它的更多信息。