Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-getResource在csv文件上失败_Java_Resources_Filepath_Getresource - Fatal编程技术网

Java-getResource在csv文件上失败

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

我有一个单元测试包,其中保存了一些txt文件。这些通过
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
文件与未编译的文件混合使用。运行程序时,您是希望仅从类路径加载文件,还是希望能够从任何位置加载文件?