|
关于Java文件路径问题
作者无: 加入时间:2008-11-21 17:14:35 点击次数:1 次 1.如何获得当前文件路径 常用: 字符串类型:System.getProperty("user.dir"); 综合:package com.zcjl.test.base;import java.io.File;public class Test { public static void main(String[] args) throws Exception { System.out.println( Thread.currentThread().getContextClassLoader().getResource("")); System.out.println(Test.class.getClassLoader().getResource("")); System.out.println(ClassLoader.getSystemResource("")); System.out.println(Test.class.getResource("")); System.out.println(Test.class.getResource("/")); System.out.println(new File("").getAbsolutePath()); System.out.println(System.getProperty("user.dir")); }}file:/E:/workSpace/javaTest/target/classes/file:/E:/workSpace/javaTest/target/classes/file:/E:/workSpace/javaTest/target/classes/file:/E:/workSpace/javaTest/target/classes/javaAPI/file:/E:/workSpace/javaTest/target/classes/E:\workSpace\javaTestE:\workSpace\javaTest 2.Web服务中 (1).Weblogic WebApplication的系统文件根目录是你的weblogic安装所在根目录. 例如:如果你的weblogic安装在c:\bea\weblogic700…… 那么,你的文件根路径就是c:\.所以,有两种方式能够让你访问你的服务器端的文件:a.使用绝对路径:比如将你的参数文件放在c:\yourconfig\yourconf.properties,直接使用 new FileInputStream("/yourconfig/yourconf.properties");b.使用相对路径:相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放在yourwebapp\yourconfig\yourconf.properties,这样使用:new FileInputStream("yourconfig/yourconf.properties");这两种方式均可,自己选择. (2).Tomcat 在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin (3).Resin 不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET的路径为根.比如用新建文件法测试File f = new File("a.htm");这个a.htm在resin的安装目录下(4).如何读相对路径哪? 在Java文件中getResource或getResourceAsStream均可 例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web发布根路径下WEB-INF/classes 也可以getClass().getClassLoader().getResourceAsStream(filePath)//filePath不是带“/”的 (5).获得文件真实路径 string file_real_path=request.getRealPath("mypath/filename"); 通常使用request.getRealPath("/"); 4.遗留问题 目前new FileInputStream()只会使用绝对路径,相对 InputStream in1 = new FileInputStream("abc1.properties"); // 相对路径InputStream in2 = new FileInputStream("/abc2.properties"); // 绝对路径,E盘下InputStream in3 = new FileInputStream("e://abc3.properties"); //相对路径 5.按Java文件类型分类读取配置文件 配置文件是应用系统中不可缺少的,可以增加程序的灵活性.java.util.Properties是从jdk1.2就有的类,一直到现在都支持load ()方法,jdk1.4以后save(output,string) ->store(output,string).如果只是单纯的读,根本不存在烦恼的问题.web层可以通过 Thread.currentThread().getContextClassLoader(). getResourceAsStream("xx.properties") 获取; Application可以通过new FileInputStream("xx.properties");直接在classes一级获取.关键是有时我们需要通过web修改配置文件,我们不 能将路径写死了.经过测试觉得有以下心得: 1.servlet中读写.如果运用Struts 或者Servlet可以直接在初始化参数中配置,调用时根据servlet的getRealPath("/")获取真实路径,再根据String file = this.servlet.getInitParameter("abc");获取相对的WEB-INF的相对路径. 例:InputStream input = Thread.currentThread().getContextClassLoader(). getResourceAsStream("abc.properties");Properties prop = new Properties();prop.load(input);input.close();OutputStream out = new FileOutputStream(path);prop.setProperty("abc", “test");prop.store(out, ”–test–");out.close(); 2.直接在jsp中操作,通过jsp内置对象获取可操作的绝对地址. 例:// jsp页面String path = pageContext.getServletContext().getRealPath("/");String realPath = path+"/WEB-INF/classes/abc.properties"; //java 程序InputStream in = getClass().getClassLoader().getResourceAsStream("abc.properties"); // abc.properties放在webroot/WEB-INF/classes/目录下prop.load(in);in.close(); OutputStream out = new FileOutputStream(path); // path为通过页面传入的路径prop.setProperty("abc", “abcccccc");prop.store(out, ”–test–");out.close(); 3.只通过Java程序操作资源文件InputStream in = new FileInputStream("abc.properties"); // 相对路径,项目下的路径 OutputStream out = new FileOutputStream("abc.properties"); 上一篇: Java对象序列化所引起的循环引用的思考 下一篇: Java入门:深入理解嵌套类和内部类 |
|||||||||||||||||||||||||||||||||||||||
| 关于我们 | 代理申请 | 付款方式 | 客户管理 | 友情链接 | 网站导航 |
| 版权所有 2008 三易网络(洛阳)科技开发有限公司 服务热线:0379-63921200 63265368(洛阳) 0371-63653120(郑州) QQ在线客服: 总部地址:纱厂南路41号中泰新城泰华苑12楼B座 郑州分公司地址:金水区圣菲城 |