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

问题描述 投票:0回答:7

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

File fileToBeReaded = new File(...);

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

java debian debian-based
7个回答
9
投票

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

如果是这种情况,请使用正斜杠而不是像

那样的反斜杠

“C:/Users/You/Desktop/test.txt”

而不是

“C:\Users\You\Desktop est.txt”


8
投票

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

new File("./myFileName")

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


5
投票

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

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

File root = new File(Thread.currentThread().getContextClassLoader().getResource("").toURI());

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

File resource = new File(root, "filename.ext");

或者您也可以只使用:

File resource = new File(Thread.currentThread().getContextClassLoader().getResource("filename.ext").toURI());

3
投票

我认为这应该可以解决问题:

File starting = new File(System.getProperty("user.dir"));
File fileToBeRead = new File(starting,"my_file.txt");

这样,将在

user.dir
属性中搜索该文件,该属性将是您应用程序的工作目录。


2
投票

您可以要求类加载器提供 jar 的位置:

getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

...但我建议将您要查找的文件放入 jar 文件中并将其作为资源读取 (

getClass().getResourceAsStream( "myFile.txt" )
)。


1
投票

在IntelliJIDEA上右键单击文件然后复制绝对路径,然后在双引号中将路径粘贴为filePath。 例如它应该是这样的:

"C:\\Users\\NameOfTheComputerUser\\IdeaProjects\\NameOfTheProject\\YourSubFolders\\name-of-the-file.example"

0
投票

路径 filePath = Paths.get("C:/Users/ganesh.parida/IdeaProjects/Walamart/src/com/cfg/recusion/example.txt"); // 使用 try-with-resources 确保 BufferedReader 自动关闭 尝试(BufferedReader bufferedReader = Files.newBufferedReader(filePath)){ 串线; // 读取并打印文件中的每一行 while ((line = bufferedReader.readLine()) != null) { System.out.println(行); } } catch (IOException e) { e.printStackTrace(); }

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.