65.9K
CodeProject 正在变化。 阅读更多。
Home

获取执行目录的句柄

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.43/5 (7投票s)

2002年12月16日

2分钟阅读

viewsIcon

53081

downloadIcon

979

返回指向类正在执行的目录的 File 和 String 对象

引言

localDir 将返回一个 StringFile 引用,指向你的代码正在执行的目录。这使得可以轻松引用与你运行 Java 类相同的目录中的磁盘文件。

背景

我想我一直受到在 Win32 世界中使用 C 和 C++ 编程的影响。我习惯于期望在不带任何目录引用地打开文件,意味着我想打开的文件与我的源代码和可执行代码位于同一目录中。如果在使用 Java 打开文件时没有指定路径,Java 默认使用 JRE 安装的 bin 目录。

Java 提供了一些方便且非常可移植的路径引用,通过 System.getProperties() 方法。通过这个调用,我可以获取我的临时主目录用户路径。

对于小型应用程序和教学目的,我希望我的源代码、可执行文件和数据文件都位于同一目录中。在 Java 新闻组的一些帮助和一些 String 解析下,我找到了如何实现的方法。

使用代码

实例化一个 localDir 类型的对象

    localDir myLd = new localDir();

为了获取(并打印)类的磁盘文件名

      System.out.println("Class Name = " + myLd.getClassName());

这实际上没有用处,除了可以看到正在使用哪个文件来确定本地目录。它总是返回 localDir.class,因为这是当你调用 getClassName() 时正在执行的类。

真正的乐趣在于调用 getLocalDirRef() 方法时

01      File myFileRef = null;
02      BufferedReader myBr = null;
03      FileReader myFr = null;
04      
05      //use localDir's getLocalDirRef to make a File Obj
06      myFileRef = myLd.getLocalDirRef();  
07      
08      try
09      {
10         myFr = new FileReader(myFileRef.getPath() + "\\localDir.java");
11         myBr = new BufferedReader(myFr);
12      }

现在我们可以获得一个 File 对象引用,指向我们的本地目录。第 06 行调用该方法,并提供我们正在执行的所需路径和目录。它返回一个 File 对象,所以准备好一个来保存信息。

第 10 行使用新获取的信息,并调用 File 的 getPath() 方法来显示路径名称。最后,将所需的文件名连接到路径,并使用它来打开一个 FileReader

使用 localDirgetLocalDirName() 方法只获取一个 String 变量来保存上述代码中的路径和目录名称可能更有意义,你是对的。

01      File myFileRef = null;
02      BufferedReader myBr = null;
03       
04      try
05      {
06         myFr = new FileReader(myLd.getLocalDirName() + "\\localDir.java");
07         myBr = new BufferedReader(myFr);
08      }

简洁明了,但如果需要,仍然可以使用 File 对象引用。

历史

初始发布日期:2002 年 12 月 16 日

编辑历史

2002 年 12 月 19 日 - 初始编辑

© . All rights reserved.