hengheng123456789

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks
          轉自:http://blog.csdn.net/soleghost/archive/2006/04/27/679374.aspx

          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.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");



          System.getProperty()參數大全
          查資料用:
          java.version Java Runtime Environment version
          java.vendor Java Runtime Environment vendor
          java.vendor.url Java vendor URL
          java.home Java installation directory
          java.vm.specification.version Java Virtual Machine specification version
          java.vm.specification.vendor Java Virtual Machine specification vendor
          java.vm.specification.name Java Virtual Machine specification name
          java.vm.version Java Virtual Machine implementation version
          java.vm.vendor Java Virtual Machine implementation vendor
          java.vm.name Java Virtual Machine implementation name
          java.specification.version Java Runtime Environment specification version
          java.specification.vendor Java Runtime Environment specification vendor
          java.specification.name Java Runtime Environment specification name
          java.class.version Java class format version number
          java.class.path Java class path
          java.library.path List of paths to search when loading libraries
          java.io.tmpdir Default temp file path
          java.compiler Name of JIT compiler to use
          java.ext.dirs Path of extension directory or directories
          os.name Operating system name
          os.arch Operating system architecture
          os.version Operating system version
          file.separator File separator ("/" on UNIX) path.separator Path separator (":" on UNIX)
          line.separator Line separator ("\n" on UNIX)
          user.name User's account name
          user.home User's home directory
          user.dir User's current working directory
          posted on 2006-12-29 16:41 哼哼 閱讀(4149) 評論(2)  編輯  收藏 所屬分類: JAVA-Common

          Feedback

          # re: 關于Java文件路徑問題(轉) 2007-12-19 21:49 ip反查域名
          說的并不全面吧.
          比如:
          user.dir: 如果是tomcat6以前版本,并且啟動的是服務:結果是{system32} 如果是直接運行的是tcomat的話. ....

          太煩了,不寫了  回復  更多評論
            

          # re: 關于Java文件路徑問題(轉) 2007-12-19 22:04 ip反查域名

          http://www.chinasolaris.org/mietian/7121543.html  回復  更多評論
            

          主站蜘蛛池模板: 绥芬河市| 深水埗区| 宜黄县| 西林县| 隆回县| 南澳县| 井陉县| 山阳县| 余庆县| 清水县| 鲁山县| 高碑店市| 林甸县| 华安县| 诏安县| 内乡县| 临邑县| 威海市| 洮南市| 新巴尔虎左旗| 马公市| 黔西县| 即墨市| 南皮县| 徐水县| 姚安县| 资溪县| 天气| 日土县| 诸暨市| 青海省| 大新县| 抚顺县| 保康县| 屯留县| 百色市| 合山市| 蒙山县| 中西区| 图木舒克市| 衡南县|