论坛首页 入门技术论坛

一个通用的动态获取文件路径的方法

浏览 2632 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-07-28  

1、【问题】

 

在之前的通用查询框架中使用的读取XML配置文件中有一个动态获取文件的方法:

 

 public String getConfFile(String file) {
  URL confURL = getClass().getClassLoader().getResource(file);
  if (confURL == null)
   confURL = getClass().getClassLoader().getResource(
     "META-INF/" + file);
  if (confURL == null)
   confURL = Thread.currentThread().getContextClassLoader()
     .getResource(file);
  if (confURL == null) {
   System.err.println(" cann't find config file:-->" + file);
  } else {
   String filePath = confURL.getFile();
   File file1 = new File(filePath);
   if (file1.isFile())
      return filePath;
  }
  return null;
 }

 

 

 

可是该方法在JDK 1.4.X下运行有问题,无法正常获取路径!

但是在JDK1.5中运行无误!

 

 

2、【分析】

 

经过跟踪发现,在1.4.X下,confURL.getFile()获取的路径如下:

 

/D:/Tomcat%205.0.28/webapps/piccdcms/WEB-INF/classes/config/Module.xml

 

很明显这里的问题在于:Tomcat%205.0.28!!

 

而在JDK 1.5里面是正常的显示:

/D:/Tomcat 5.0.28/webapps/piccdcms/WEB-INF/classes/config/Module.xml

 

 

3、【解决方案】

 

   String filePath = confURL.getFile();
   File file1 = new File(filePath);
   if (file1.isFile())
      return filePath;

 

 

===========》

 

 

   String filePath = confURL.getFile();
   filePath = filePath.replaceAll("%20", " ");
   File file1 = new File(filePath);
   if (file1.isFile())
    return filePath;

 

   修改之后,该方法就可以在JDK1.4中正常使用了!

 

 

4、【总结】

 

对于JDK1.5中的URL.getFile(),能自动把unicode编码(%20)转换过来。而在1.4.X中还不行,必须人为进行转换。

 

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics