【问题标题】:bufferedReader only read local csv filebufferedReader 只读取本地 csv 文件
【发布时间】:2017-09-21 13:35:42
【问题描述】:

我是 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());

【问题讨论】:

  • src 文件夹相对于编译类的运行位置不存在
  • 这里还是不行。还有什么想法吗?谢谢!
  • 使用 Stream 代替 File: CSVtoArray2.class.getResourceAsStream()?
  • 文件在哪里?你在 Eclipse 中运行它吗? Eclipse 在项目目录中查找文件
  • 查看loading resources了解加载文件的不同方式

标签: java bufferedreader filereader


【解决方案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 以获取更多信息。

【讨论】:

  • 注意:这个需要Apache commons io
猜你喜欢
  • 2013-04-12
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2017-11-13
  • 2016-01-28
  • 2011-03-29
相关资源
最近更新 更多