2 zb51500618 zb51500618 于 2016.09.20 17:51 提问

web项目中获取配置文件路径问题

现在做的是maven搭建的spring mvc项目,在service层获取code.properties图片说明

代码如下

 public static void updateProperties(String fileName,Map<String, String> keyValueMap) {  

        //String filePath = CodeTools.class.getClass().getResource("/").getPath();
         String  filePath  =  Thread.currentThread().getContextClassLoader().getResource(fileName).getPath(); 
       // String filePath = ClassLoader.getSystemClassLoader().getResource(fileName).getPath();
        Properties props = null;  
        BufferedWriter bw = null;  

        try {  
            filePath = URLDecoder.decode(filePath,"utf-8");      
            props = PropertiesLoaderUtils.loadProperties(new ClassPathResource(fileName));  

            // 写入属性文件  
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));  

            props.clear();// 清空旧的文件  

            for (String key : keyValueMap.keySet())  
                props.setProperty(key, keyValueMap.get(key));  

            props.store(bw, "");  
        } catch (IOException e) {  
        } finally {  
            try {  
                bw.close();
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  

这个类在service层里,这里获取的filePath路径 转码后如下:
file:/D:/work space/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/ctoc-manage/WEB-INF/lib/ctoc-service-0.0.1-SNAPSHOT.jar!/code.properties

这个路径 在这行就找不到了
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));

单独测试的时候是没有问题的,路径没这么复杂。在项目里就不知道 这是什么路径,求解!!!

我换了个tomcat地址,路径为:
file:/D:/apache-tomcat-7.0.68/wtpwebapps/ctoc-seller/WEB-INF/lib/ctoc-service-0.0.1-SNAPSHOT.jar!/code.properties

ctoc-service被打了包,ctoc-service-0.0.1-SNAPSHOT.jar! ,在tomcat里面怎么获取这个类的地址? 带架包的路径 输出流都不能生成。

被这些路径搞得头都晕了,help!

1个回答

chenminhua1
chenminhua1   2016.09.20 20:15

路径获取不对,你得文件在编译打包的时候回被打倒target下面的文件夹里面,所以你的文件的路径应该是工作空间项目目录,target目录下面的子目录里面

zb51500618
zb51500618 我看了下tomcat下面的路径,ctoc-service被打成了架包 ctoc-service-0.0.1-SNAPSHOT.jar,我这里获取的是打包的路径。如果我是把项目打包放在生产上,这个路径该怎么获取呢?
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!