如何使用classpath加载csv文件? 在此之前,我尝试使用FileReader加载文件,该文件在本地运行时工作正常但在部署到外部服务器时抛出FileNotFound等异常。下面的代码在本地工作,但是当部署时,tomcat文件夹www / [jar]上的jar会抛出此异常 不幸的是,我无法提供原始代码。这是要点:
BufferedReader br = new BufferedReader(new FileReader("src/SSR.csv"));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] cols = line.split(",");
map.put(cols[1],cols[0]);
答案 0 :(得分:1)
这里你应该考虑两件事
您当前的代码假定CSV位于工件外部的FileSystem中,这可能不正确,因此它只是找不到该文件。
此处的正确方法是使用getClass().getResourceAsStream()
/ getClass().getClassLoader().getResourceAsStream()
CSV文件可能很复杂,尽管它们的结构看起来很简单。因此,如果您从事的是现实生活中的项目,而不是为了学习目的而做某种功课,我强烈建议您使用3rdparty库来处理CSV:
......仅举几例
答案 1 :(得分:1)
由于您使用spring标记了问题,因此我想指出Spring Framework提供的资源实现。文档可在以下网址找到:
对于你的csv文件
Resource csv = context.getResource("classpath:some/resource/path/my.csv");
InputStream inputstream = csv.getInputStream();
应该是一个起点。资源接口提供了
File getFile() throws IOException;
方法,但这仅在文件驻留在文件系统中时才有效。因此,对于您的情况,您应该使用我认为的输入流方法。
编辑: 在这里,您可以使用ClassPathResource找到另一个答案 https://stackoverflow.com/a/44412189/7634201