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,我这里获取的是打包的路径。如果我是把项目打包放在生产上,这个路径该怎么获取呢?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Web工程中配置文件路径问题
Web工程中,配置文件放的位置和读取方式的总结。
配置文件路径问题
1.如何在一个Servlet得到配置文件的路径。package com.itheima; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Properties; import javax.servlet.ServletException; import ja...
Jar文件配置文件路径问题
在Eclipse中运行的时候,一切正常。把Java工程导成了可运行Java文件,通过java -jar XX.jar命令运行的时候,会报异常说配置文件路径找不到.
彻底解决java WEB项目的文件路径问题(war包)
在j2EE项目中,我们一般会把项目打包发布,一般是war包,作为独立单元,可以远程上传,加载,发布,还可以实现版本控制,但这与我们开发过程中使用MyEclipse自动部署有所不同,以下做详细说明. 使用war包部署,在tomcat和WebLogic下部署有很大的区别,tomcat会把war自动加压到当前目录下,然后再用解压的目录来发布,这与一般不会出现太大的意外,但如果是用WebLogic发布,
java获取文件路径问题
1.如何获得当前文件路径 常用: (1).Test.class.getResource("") 得到的是当前类FileTest.class文件的URI目录。不包括自己! (2).Test.class.getResource("/") 得到的是当前的classpath的绝对URI路径。 (3).Thread.currentThread().getContextClassLoader().
springmvc配置文件路径问题
问题:加载web.xml后,读取哪个配置文件?看是否存在Init-param配置,如果存在则读取src下application.xml;否则默认路径为WEB-INF/servletname-servlet.xml。
python日志的配置文件路径问题
import logging import logging.config logging.config.fileConfig(path) logger = logging.getLogger('') 利用以上python代码配置日志输出时,如果该脚本是主脚本(即import别人,不被别人import,在执行逻辑的最顶端),path表示的日志配置文件只能与该脚本在同一目录下或者在其子
jar包 配置文件路径问题
1. System.getProperty("user.dir")    在ecplise里面会是当前工程根目录   而打包后,得到的是jar包所在的跟目录。 2.Class.getResourceAsStream ("/some/pkg/resource.properties");    需要"/" 3.ClassLoader.getResourceAsStream ("some/pk
关于java配置文件路径问题
//先演示相对路径的问题,没有以/开头就是相对路径,跟这类同一个文件下 InputStream ips = new FileInputStream("config.properties");//这时文件是放在工程与src文件同一级的 一定要记住用完整的路径,但完整的路径不是硬编码,而是运算出来的。*/ InputStream ips = new FileI
Windows 服务程序 配置文件路径问题
-