0

我目前正在编写一款名为 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 文件的位置,我想放置程序的位置,而资源将是我想要访问电子表格的位置。
任何帮助将非常感激。非常感谢您的先进!

4

2 回答 2

1

尝试使用...

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");

例如...

于 2013-09-21T02:34:09.387 回答
0

要获取当前目录,只需使用以下内容:

    public class CurrentPath extends java.io.File  
 {  
     private static String path = ".";  
     CurrentPath()  
     {  
         super(path);  
     }  
     String getResult()
     {  
         return path;  
     }  
     public static void main(String[] args)  
     {  
         CurrentPath cpp = new CurrentPath(); 
         //get path with cpp.getResult();  
     }  
 } 
于 2013-09-21T01:59:58.570 回答