我们在做java开发(纯java程序,或者java web开发)时,经常会遇到需要读取配置文件的需求,如果我们将文件所在位置的信息直接写到程序中,例如:E:/workspace/JavaGUI/bin/com/util这个目录,这样虽然可行,但是,却产生了很大的局限性,因为读取的文件必须要要满足在E:/workspace/JavaGUI/bin/com/util之下才能够被正常读取,否则java抛异常。那如果在没有E盘盘符的服务器上,这样的程序是没办法执行的。所以就需要我们的程序能够读取当前文件的所在位置,从而确定文件的物理磁盘位置,而不是手动写入这个位置。
以下程序,就实现了这个功能
- /**
- * 得到类的路径,例如E:/workspace/JavaGUI/bin/com/util
- * @return
- * @throws java.lang.Exception
- */
- public String getClassPath() throws Exception {
- try {
- String strClassName = getClass().getName();
- String strPackageName = "";
- if (getClass().getPackage() != null) {
- strPackageName = getClass().getPackage().getName();
- }
- String strClassFileName = "";
- if (!"".equals(strPackageName)) {
- strClassFileName = strClassName.substring(strPackageName.length() + 1,
- strClassName.length());
- } else {
- strClassFileName = strClassName;
- }
- URL url = null;
- url = getClass().getResource(strClassFileName + ".class");
- String strURL = url.toString();
- strURL = strURL.substring(strURL.indexOf('/') + 1, strURL
- .lastIndexOf('/'));
- //返回当前类的路径,并且处理路径中的空格,因为在路径中出现的空格如果不处理的话,
- //在访问时就会从空格处断开,那么也就取不到完整的信息了,这个问题在web开发中尤其要注意
- return strURL.replaceAll("%20", " ");
- } catch (Exception ex) {
- ex.printStackTrace();
- throw ex;
- }
- }