Java-getResource在csv文件上失败
我有一个单元测试包,其中保存了一些txt文件。这些通过Java-getResource在csv文件上失败,java,resources,filepath,getresource,Java,Resources,Filepath,Getresource,我有一个单元测试包,其中保存了一些txt文件。这些通过getClass().getResource(文件)加载调用,它工作正常。我在同一个文件夹中添加了一个csv文件,如果我提供它的名称作为参数,即getClass().getResource(“csvFile.csv”)我得到空值。。。知道为什么吗?当你使用 getClass().getResource("csvFile.csv"); getClass().getClassLoader().getResource("csvFile.csv
getClass().getResource(文件)加载代码>调用,它工作正常。我在同一个文件夹中添加了一个csv文件,如果我提供它的名称作为参数,即getClass().getResource(“csvFile.csv”)代码>我得到空值。。。知道为什么吗?当你使用
getClass().getResource("csvFile.csv");
getClass().getClassLoader().getResource("csvFile.csv");
它看起来是相对于类的
当你使用
getClass().getResource("csvFile.csv");
getClass().getClassLoader().getResource("csvFile.csv");
它在类路径的顶级目录中查找
public class B {
B() {
URL resource = getClass().getClassLoader().getResource("csvFile.csv");
System.out.println("Found "+resource);
}
public static void main(String... args) {
new B();
}
}
我猜你想要第二张表格
从
在委派之前,使用以下算法从给定的资源名称构造绝对资源名称:
- 如果名称以“/”开头(“\u002f”),则资源的绝对名称是名称中“/”后面的部分
- 否则,绝对名称的形式如下:
修改的\u包\u名称/名称
其中,修改后的_package_name是此对象的包名,用“/”替换“.”(“\u002e”)
如您所见,使用了类的包名称的目录转换
例如,我有一个maven项目,其中代码位于src/main/java
下。我的资源目录src/main/resources
我将csvFile.csv
添加到我的资源目录中,该目录将被复制到我的类路径中
public class B {
B() {
URL resource = getClass().getClassLoader().getResource("csvFile.csv");
System.out.println("Found "+resource);
}
public static void main(String... args) {
new B();
}
}
哪张照片
Found file:/C:/untitled/target/classes/csvFile.csv
这是maven从资源目录构建的区域。当您使用
getClass().getResource("csvFile.csv");
getClass().getClassLoader().getResource("csvFile.csv");
它看起来是相对于类的
当你使用
getClass().getResource("csvFile.csv");
getClass().getClassLoader().getResource("csvFile.csv");
它在类路径的顶级目录中查找
public class B {
B() {
URL resource = getClass().getClassLoader().getResource("csvFile.csv");
System.out.println("Found "+resource);
}
public static void main(String... args) {
new B();
}
}
我猜你想要第二张表格
从
在委派之前,使用以下算法从给定的资源名称构造绝对资源名称:
- 如果名称以“/”开头(“\u002f”),则资源的绝对名称是名称中“/”后面的部分
- 否则,绝对名称的形式如下:
修改的\u包\u名称/名称
其中,修改后的_package_name是此对象的包名,用“/”替换“.”(“\u002e”)
如您所见,使用了类的包名称的目录转换
例如,我有一个maven项目,其中代码位于src/main/java
下。我的资源目录src/main/resources
我将csvFile.csv
添加到我的资源目录中,该目录将被复制到我的类路径中
public class B {
B() {
URL resource = getClass().getClassLoader().getResource("csvFile.csv");
System.out.println("Found "+resource);
}
public static void main(String... args) {
new B();
}
}
哪张照片
Found file:/C:/untitled/target/classes/csvFile.csv
这是maven从资源目录构建的区域。您是否尝试过getClass().getClassLoader().getResourceAsStream(文件)
这反过来会返回一个inputstream,您可以使用它来访问文件您是否尝试过getClass().getClassLoader().getResourceAsStream(文件)
这反过来会返回一个inputstream,您可以使用它访问文件,但我在同一文件夹中有其他文本文档,它们是使用第一条命令找到的。您能描述一下您的目录结构吗,因为它对我有用吗?这些文件相对于类路径是如何排列的,或者您没有使用类路径?您所说的类路径是什么意思?我在intellij中有一个项目,有一个名为test的文件夹,其中有一堆测试java文件+一些txt csv文件。txt文件是使用getResource查找的,但csv不是getResource仅从类路径查找文件。我在IntelliJ中使用maven。我建议不要将.java
文件与未编译的文件混合使用。当你运行你的程序时,你打算只从你的类路径加载文件,还是想从任何地方加载文件?但是我在同一个文件夹中有其他文本文档,它们是使用第一个命令找到的。你能描述一下你的目录结构吗,因为它对我有用?这些文件相对于类路径是如何排列的,或者您没有使用类路径?您所说的类路径是什么意思?我在intellij中有一个项目,有一个名为test的文件夹,其中有一堆测试java文件+一些txt csv文件。txt文件是使用getResource查找的,但csv不是getResource仅从类路径查找文件。我在IntelliJ中使用maven。我建议不要将.java
文件与未编译的文件混合使用。运行程序时,您是希望仅从类路径加载文件,还是希望能够从任何位置加载文件?