Java getResourceAsStream方法返回null InputStream
此类读取CSV文件Java getResourceAsStream方法返回null InputStream,java,csv,testing,junit,Java,Csv,Testing,Junit,此类读取CSV文件 public class ReadCSVFile { private static final String SEMICOLON_DELIMITER = ";"; public Map<Integer,Company> listFromFile(String csvFile) throws IOException { BufferedReader br = null; br = new BufferedRe
public class ReadCSVFile {
private static final String SEMICOLON_DELIMITER = ";";
public Map<Integer,Company> listFromFile(String csvFile) throws IOException {
BufferedReader br = null;
br = new BufferedReader(new
InputStreamReader(ReadCSVFile.class.getResourceAsStream(csvFile)));
Map<Integer,Company> companyHashMap = new HashMap();
String line;
br.readLine();
while ((line = br.readLine()) != null) {
int pos = line.indexOf(SEMICOLON_DELIMITER);
String companyCode = line.substring(0,pos);
String companyName = line.substring(pos +1, line.length());
companyHashMap.put(Integer.parseInt(companyCode), new Company(Integer.parseInt(companyCode), companyName));
}
return companyHashMap;
}
}
测试失败,我收到以下消息:
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at app.ReadCSVFile.listFromFile(ReadCSVFile.java:21)
at ReadCSVFileTest.shouldExtractCompanyFromCSV(ReadCSVFileTest.java:23)
而是行(ReadCSVFileTest.java:23)
:
Map result=readCSVFile.listFromFile(“test_company_list.csv”);
请阅读getResourceAsStream
文档
- @参数名称所需资源的名称
- @返回{@link java.io.InputStream}对象或{@code null}如果
- 找不到具有此名称的资源
您确定发送的csvFile文件的路径正确吗?似乎您必须使用绝对名称我使用以下说明修复了它:
br = new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream(csvFile)));
按照此链接的解决方案:我使用了IntelliJ复制的相对路径。这是一个奇怪的测试行为,因为2天前它工作正常,但我没有改变任何事情。
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at app.ReadCSVFile.listFromFile(ReadCSVFile.java:21)
at ReadCSVFileTest.shouldExtractCompanyFromCSV(ReadCSVFileTest.java:23)
br = new BufferedReader(new InputStreamReader(ReadCSVFile.class.getResourceAsStream(csvFile)));
Map<Integer, Company> result = readCSVFile.listFromFile("test_company_list.csv");
br = new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream(csvFile)));