Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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能够相对地读取依赖文件_Java_Intellij Idea_Gradle_Jar_Artifacts - Fatal编程技术网

如何确保Java能够相对地读取依赖文件

如何确保Java能够相对地读取依赖文件,java,intellij-idea,gradle,jar,artifacts,Java,Intellij Idea,Gradle,Jar,Artifacts,我的项目是由Intellij创建的,这是一个gradle项目,路径是:c:\project\ 这是节目 Path path = Paths.get("input.txt"); List<String> lines=java.nio.file.Files.readAllLines(path, Charset.forName("utf-16le")); jar是在 C:\project\out\artifacts\project_jar\project.jar 所以我将input.t

我的项目是由Intellij创建的,这是一个gradle项目,路径是:c:\project\

这是节目

Path path = Paths.get("input.txt");
List<String> lines=java.nio.file.Files.readAllLines(path, Charset.forName("utf-16le"));
jar是在

C:\project\out\artifacts\project_jar\project.jar
所以我将input.txt复制到

C:\project\out\artifacts\project_jar\input.txt
但是如果我在开发时用intellij运行程序,我的程序就找不到input.txt

只有当我将文件放在

C:\project\input.txt
我不想每次发布程序时都手动将所有依赖文件复制到jar的路径

Path path = Paths.get("input.txt");
List<String> lines=java.nio.file.Files.readAllLines(path, Charset.forName("utf-16le"));

如何确保在这两种情况下都可以读取文件?

我不想每次发布程序时都将所有依赖文件复制到jar路径,这很好,因为这样做没有帮助。对于从与JAR相同的目录中读取文件,没有内置的支持。如果a文件位于当前工作目录中,则可以读取该文件;如果在类路径中提供完整路径,则可以读取b文件;对于JAR,类路径中的c表示在JAR文件中。要对最后一个选项执行此操作,需要使用ClassLoader.getResourceAsInputStream