當前位置:生活全書館 >

IT科技

> java獲取路徑

java獲取路徑

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

很多朋友都想知道java如何獲取路徑?下面就一起來了解一下吧~

方法一:使用System獲取路徑

方法二:使用當前類的ProtectionDomain或者ClassLoader獲取路徑

方法三:使用Thread獲取路徑

方法一:

示例:

 public static  final String URLConfig = System.getProperty("user.dir").replace("bin", "webapps")+"/URLConfig.properties";//這種是將配置檔案放到Tomcat的webapps的目錄下

其中的 System.getProperty("user.dir")  為獲取使用者當前工作目錄

java的System.getProperty()方法可以獲取的值

java獲取路徑

獲取的程式碼示例:

public   class  SystemProperty {      public   static   void  main(String args[]) {         System.out.println("java_vendor:"  + System.getProperty( "java.vendor" ));         System.out.println("java_vendor_url:"                   + System.getProperty("java.vendor.url" ));         System.out.println("java_home:"  + System.getProperty( "java.home" ));         System.out.println("java_class_version:"                   + System.getProperty("java.class.version" ));         System.out.println("java_class_path:"                  + System.getProperty("java.class.path" ));         System.out.println("os_name:"  + System.getProperty( "os.name" ));         System.out.println("os_arch:"  + System.getProperty( "os.arch" ));         System.out.println("os_version:"  + System.getProperty( "os.version" ));         System.out.println("user_name:"  + System.getProperty( "user.name" ));         System.out.println("user_home:"  + System.getProperty( "user.home" ));         System.out.println("user_dir:"  + System.getProperty( "user.dir" ));         System.out.println("java_vm_specification_version:"                  + System.getProperty("java.vm.specification.version" ));         System.out.println("java_vm_specification_vendor:"                  + System.getProperty("java.vm.specification.vendor" ));         System.out.println("java_vm_specification_name:"                  + System.getProperty("java.vm.specification.name" ));         System.out.println("java_vm_version:"                  + System.getProperty("java.vm.version" ));         System.out.println("java_vm_vendor:"                  + System.getProperty("java.vm.vendor" ));         System.out                 .println("java_vm_name:"  + System.getProperty( "java.vm.name" ));         System.out.println("java_ext_dirs:"                  + System.getProperty("java.ext.dirs" ));         System.out.println("file_separator:"                  + System.getProperty("file.separator" ));         System.out.println("path_separator:"                  + System.getProperty("path.separator" ));         System.out.println("line_separator:"                  + System.getProperty("line.separator" ));     }

java獲取路徑 第2張

方法二:

public static String getMyDIR(){//獲取當前類檔案的絕對路徑String jarWholePath = ConfigerPraram.class.getProtectionDomain().getCodeSource().getLocation().getFile(); try { //保險起見,將路徑進行decode轉碼jarWholePath = java.net.URLDecoder.decode(jarWholePath, "UTF-8"); } catch (UnsupportedEncodingException e) { System.out.println(e.toString()); } //獲取jar包的上級目錄String jarPath = new File(jarWholePath).getParentFile().getAbsolutePath(); return jarPath;}/**     * 獲取專案所在路徑     *      * @return     */    public static String getRealPath() {     //通過類載入器獲取jar包的絕對路徑        String realPath = MyPath.class.getClassLoader().getResource("")                .getFile();        java.io.File file = new java.io.File(realPath);        realPath = file.getParentFile().getAbsolutePath(); //獲取jar包的上級目錄try {       //路徑decode轉碼            realPath = java.net.URLDecoder.decode(realPath, "utf-8");        } catch (Exception e) {            e.printStackTrace();        }      return realPath ;   }

方法三:

Thread.currentThread().getContextClassLoader().getResource("")來得到當前的classpath的絕對路徑的URI表示法

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();prop.setProperty("abc", “test");prop.store(new FileOutputStream(path), “–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 路徑
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/1rgvyk.html