获取执行目录的句柄






4.43/5 (7投票s)
2002年12月16日
2分钟阅读

53081

979
返回指向类正在执行的目录的 File 和 String 对象
引言
localDir
将返回一个 String
和 File
引用,指向你的代码正在执行的目录。这使得可以轻松引用与你运行 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
。
使用 localDir
的 getLocalDirName()
方法只获取一个 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 日 - 初始编辑