使用类路径在java中加载CSV
如何使用类路径加载csv文件? 在此之前,我尝试使用FileReader加载文件,在本地运行时效果很好,但部署到外部服务器时会抛出FileNotFound之类的异常。下面的代码在本地工作,但在tomcat文件夹www/[jar]上部署jar时会引发此异常 不幸的是,我无法提供原始代码。要点如下:使用类路径在java中加载CSV,java,spring,csv,Java,Spring,Csv,如何使用类路径加载csv文件? 在此之前,我尝试使用FileReader加载文件,在本地运行时效果很好,但部署到外部服务器时会抛出FileNotFound之类的异常。下面的代码在本地工作,但在tomcat文件夹www/[jar]上部署jar时会引发此异常 不幸的是,我无法提供原始代码。要点如下: BufferedReader br = new BufferedReader(new FileReader("src/SSR.csv")); while ((line = br.readLine
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]);
这里有两件事你应该考虑:
getClass().getResourceAsStream()
/getClass().getClassLoader().getResourceAsStream()
<> P> >这里有两件事你应该考虑:
getClass().getResourceAsStream()
/getClass().getClassLoader().getResourceAsStream()
…举几个例子因为您用spring标记了这个问题,所以我想向您指出spring框架提供的资源实现。文档可在以下位置找到: 对于您的csv文件,请按照
Resource csv = context.getResource("classpath:some/resource/path/my.csv");
InputStream inputstream = csv.getInputStream();
应该是一个起点。资源接口提供了一个
File getFile() throws IOException;
方法,但这仅在文件驻留在文件系统中时才起作用。因此,对于您的案例,我认为您应该使用inputstream的方法
编辑:
在这里,您可以使用ClassPathResource找到另一个答案
既然您用spring标记了这个问题,我想向您介绍spring框架提供的资源实现。文档可在以下位置找到: 对于您的csv文件,请按照
Resource csv = context.getResource("classpath:some/resource/path/my.csv");
InputStream inputstream = csv.getInputStream();
应该是一个起点。资源接口提供了一个
File getFile() throws IOException;
方法,但这仅在文件驻留在文件系统中时才起作用。因此,对于您的案例,我认为您应该使用inputstream的方法
编辑:
在这里,您可以使用ClassPathResource找到另一个答案
您需要发布您的代码,让我们看看发生了什么,以及完整的异常堆栈跟踪,您是否使用了getClass().getResource()。。你的类路径中有文件吗?你可以检查这个主题。你可能会找到解决问题的办法。您需要发布您的代码,让我们看看发生了什么,以及完整的异常堆栈跟踪,您是否使用了getClass().getResource()。。你的类路径中有文件吗?你可以检查这个主题。你可能会找到解决问题的办法。我可以使用ClassPathResource从单元测试用例中读取src/test/resources下的csv文件,但是我无法从src/main/java代码中读取src/main/resources下的相同文件。我可以使用ClassPathResource从单元测试用例中读取src/test/resources下的csv文件,但是我无法从src/main/java代码中读取src/main/resources下的同一个文件我可以使用ClassPathResource从单元测试用例中读取src/test/resources下的csv文件,但是我无法从src/main/java中读取src/main/resources下的同一个文件code@Sid如何运行代码?也许这就是你的问题的答案我使用gradle来构建和运行JAR,你能在ClasspathResource中发布引用文件的路径吗?我可以使用ClasspathResource从单元测试用例中读取src/test/resources下的csv文件,但是我无法从src/main/java读取src/main/resources下的相同文件code@Sid如何运行代码?也许这就是你的问题的答案,我使用gradle来构建和运行JAR,你能在ClasspathResource中发布引用文件的路径吗?