我们在很多时候,都希望使用文件的 绝对路径 做一些事。但是方法不当的话,这个需求就很难实现了,特别是对一些newer而言,绝对路径的问题很可能会给他们带来很大的困扰。所以我把自己常用的一个取得绝对路径的方法和大家分享一下,希望对大家有所帮助。
private String getClassPath() {
String strClassName = getClass().getName();
String strClassFileName = strClassName.substring(strClassName
.lastIndexOf(".") + 1, strClassName.length());
URL url = null;
url = getClass().getResource(strClassFileName + ".class");
String strURL = url.toString();
strURL = strURL.substring(strURL.indexOf('/') + 1);
return strURL;
}
将这个方法加入到需要的类中,就可以得到类文件所在的绝对路径。有人可能会问,这个方法好像没有实际的用处啊?别着急,我解释一下:
一般我们都是把一些资源文件放在固定的地方,而且资源文件和类文件的相对位置是已知的,比如在JBuilder的工程中,我们建立了一个包com.myCompany.util,把资源文件A.txt放在了和com文件夹并列的位置。那么我们使用上面的函数得到的绝对路径就是String path =d:/workspace/myProject/src/com/myCompany/util/xxx.class,我们使用String path2 = path.subString(0,path.lastIndexOf("/"));
就可以得到path2 =d:/workspace/myProject/src/com/myCompany/util
依次类推,
path2 =d:/workspace/myProject/src/com/myCompany
path2 =d:/workspace/myProject/src/com
path2 =d:/workspace/myProject/src
这样就可以使用path2 = path2+"/A.txt",得到我们需要的绝对路径
path2 =d:/workspace/myProject/src/A.txt
这样我们使用系统中的绝对路径和我们知道的相对位置(相对路径)就可以随意存取我们需要的东西了。