JAVA资格认证(关于Java文件路径问题)

  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\javaTest
  E:\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.htmresin的安装目录下
  (4.如何读相对路径哪?
  在Java文件中getResourcegetResourceAsStream均可
  例:getClass().getResourceAsStreamfilePath);//filePath可以是"/filename",这里的/代表web发布根路径下WEB-INF/classes
  也可以getClass().getClassLoader().getResourceAsStreamfilePath//filePath不是带“/”
  (5.获得文件真实路径
  string file_real_path=request.getRealPath"mypath/filename");
  通常使用request.getRealPath"/");
  3.遗留问题
  目前new FileInputStream()只会使用绝对路径,相对
  InputStream in1 = new FileInputStream"abc1.properties"); // 相对路径InputStream in2 = new FileInputStream"/abc2.properties"); // 绝对路径,E盘下InputStream in3 = new FileInputStream"e://abc3.properties"); //相对路径
  4.Java文件类型分类读取配置文件
  配置文件是应用系统中不可缺少的,可以增加程序的灵活性.java.util.Properties是从jdk1.2就有的类,一直到现在都支持load ()方法,jdk1.4以后saveoutputstring ->storeoutputstring.如果只是单纯的读,根本不存在烦恼的问题.web层可以通过 Thread.currentThread().getContextClassLoader().
  getResourceAsStream"xx.properties" 获取;
  Application可以通过new FileInputStream"xx.properties");直接在classes一级获取.关键是有时我们需要通过web修改配置文件,我们不 能将路径写死了.经过测试觉得有以下心得:
  1.servlet中读写.如果运用Struts 或者Servlet可以直接在初始化参数中配置,调用时根据servletgetRealPath"/")获取真实路径,再根据String file = this.servlet.getInitParameter"abc");获取相对的WEB-INF的相对路径.
  例:InputStream input = Thread.currentThread().getContextClassLoader().
  getResourceAsStream"abc.properties");Properties prop = new Properties();prop.loadinput);input.close();OutputStream out = new FileOutputStreampath);prop.setProperty"abc" “test");prop.storeout ”–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.loadin);in.close();
  OutputStream out = new FileOutputStreampath); // path为通过页面传入的路径prop.setProperty"abc" “abcccccc");prop.storeout ”–test–");out.close();
  3.只通过Java程序操作资源文件InputStream in = new FileInputStream"abc.properties"); // 相对路径,项目下的路径
  OutputStream out = new FileOutputStream

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值