如何在java中指定文件路径?

Yat*_*oel 7 java debian debian-based

我为“Debian Linux”创建了一个 Java 应用程序。现在我希望该应用程序读取放置在指定该应用程序的 jar 文件的目录中的文件。那么在 File Object 的参数中指定什么?

File fileToBeReaded = new File(...);
Run Code Online (Sandbox Code Playgroud)

要指定什么作为上述语句的参数来指定表示应用程序 jar 文件所在路径的相对文件路径?

Car*_*icz 7

如果你知道文件名,当然是简单的

new File("./myFileName")
Run Code Online (Sandbox Code Playgroud)

如果您不知道名称,可以使用 File 对象的 list() 方法获取当前目录中的文件列表,然后选择您想要的文件。


小智 7

您是在询问转义字符问题吗?

如果是这种情况,则使用正斜杠而不是像这样的反斜杠

"C:/Users/You/Desktop/test.txt"

代替

"C:\Users\You\Desktop\test.txt"


Bal*_*usC 5

使用相对路径java.io.File完全依赖于当前工作目录。这与执行 JAR 的方式不同。例如,如果您/foo执行 JAR,java -jar /bar/jar/Bar.jar那么工作目录仍然是/foo. 但是如果您cd执行/bar/jar并执行,java -jar Bar.jar那么工作目录是/bar/jar.

如果您想要 JAR 所在的根路径,方法之一是:

File root = new File(Thread.currentThread().getContextClassLoader().getResource("").toURI());
Run Code Online (Sandbox Code Playgroud)

这将返回 JAR 文件的根路径(类路径根)。如果将资源相对于类路径根放置,则可以按如下方式访问它:

File resource = new File(root, "filename.ext");
Run Code Online (Sandbox Code Playgroud)

或者你也可以只使用:

File resource = new File(Thread.currentThread().getContextClassLoader().getResource("filename.ext").toURI());
Run Code Online (Sandbox Code Playgroud)