java獲取路徑
- IT科技
- 關注:1.99W次
很多朋友都想知道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()方法可以獲取的值
獲取的程式碼示例:
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" )); }
方法二:
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");
- 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/1rgvyk.html