gpt4 book ai didi

java - 如何获取文件夹的位置?

转载 作者:行者123 更新时间:2023-12-01 14:05:41 24 4
gpt4 key购买 nike

我目前正在编写一款游戏,名为 Legend of Zork(开发标题),主要是为了让我忙于编写代码和更深层次地学习 Java。然而,我被困在一项特定任务上。我希望能够将包含文件夹复制到我的计算机、其他人的计算机甚至闪存驱动器上的任何位置,并使其正常运行。当我将程序编译成 Jar 时,我需要指定文件夹的路径,以便代码可以使用所需的文件(例如音乐或电子表格)。我已尝试以下操作:
String dir = System.getProperty("user.dir") + "/resources/";
这将在 Eclipse 中提供正确的路径(“/media/MOTHLACHAIN/LegendOfZork/resources/”,这是我用作工作空间的拇指驱动器)并完美运行,但是当我构建并运行 jar 时,它不会运行到 FileNotFoundException。在终端中,输入“java -jar LegendOfZork.jar”,如果我不包含引用文件的类,它会起作用,表示它正在寻找“/home/viktor/resources/Weapons.xls”,而它应该寻找对于“/home/viktor/LegendOfZork/resources/Weapons.xls”,或者如果从我的桌面运行,应该寻找“/home/viktor/Desktop/LegendOfZork/resources/Weapons.xls”等。我的程序的文件夹层次结构是:
1.佐克传奇
- 音频
- 音乐
- 声音
- 垃圾箱
- 资源

例如,LegendOfZork 文件夹将是包含 jar 文件的位置,无论我想要将程序放在哪里,资源都将是我想要访问电子表格的位置。
任何帮助将非常感激。非常感谢您!

最佳答案

尝试使用...

File file = new File(".");

这将为您提供当前工作目录的引用。

如果您需要知道绝对路径,请使用类似...的内容

file.getAbsoluteFile();

file.getCanonicalFile()

请参阅JavaDocs了解更多详情

现在,File 允许您定义相对路径。因此,诸如 File resources = new File("resources"); 之类的内容将为 ./resources 创建一个抽象路径。现在,这显然与执行点(程序运行的位置)相关,因此您可能需要考虑到这一点。

所以假设你的文件夹 hirarcy 看起来像......

+ LegendOfZork
...jar files...
+ audio
+ music
+ sounds
+ bin
+ resources

例如,您的应用程序是从 LegendOfZork 目录的上下文启动的,然后要访问 audio 目录,您需要执行类似的操作。 ..

File audio = new File("../audio");
File music = new File(audio, "music");
File sounds = new File(audio, "sounds");

例如...

关于java - 如何获取文件夹的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18928113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com