java獲取當前路徑的幾種方法

JAVA 中獲取路徑:
1、在類中
一、利用System.getProperty()函數獲取當前工程的路徑: 
    System.getProperty("user.dir");//結果:D:\WorkSpace\smart
    //user.dir指定了當前的路徑 
    另外:System.getProperty()中的字符串參數以下: java

@SuppressWarnings("rawtypes")
	public static void main(String[] args) {
		Properties pro = System.getProperties();
		Iterator it = pro.keySet().iterator();
		while(it.hasNext()){
			String key = (String) it.next();
			System.out.println(key +"="+pro.get(key));
			
		}
	}
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\Program Files\Java\jdk1.8.0_131\jre\bin
java.vm.version=25.131-b11
java.vm.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
path.separator=;
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io
user.country=CN
user.script=
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=D:\WorkSpace\smart
java.runtime.version=1.8.0_131-b11
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\jdk1.8.0_131\jre\lib\endorsed
os.arch=amd64
java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\
line.separator=

java.vm.specification.vendor=Oracle Corporation
user.variant=
os.name=Windows 10
sun.jnu.encoding=GBK
java.library.path=C:\Program Files\Java\jdk1.8.0_131\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_131/bin/server;C:/Program Files/Java/jre1.8.0_131/bin;C:/Program Files/Java/jre1.8.0_131/lib/amd64;C:\Python\Python36\Scripts\;C:\Python\Python36\;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Git\cmd;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.8.0_131\bin;C:\Program Files\Java\jdk1.8.0_131\jre\bin;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;;D:\Eclipse\eclipse;;.
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=10.0
user.home=C:\Users\Administrator
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
java.class.path=D:\WorkSpace\smart\target\classes
user.name=smart
java.vm.specification.version=1.8
sun.java.command=cn.smart.test.MyTest
java.home=C:\Program Files\Java\jdk1.8.0_131\jre
sun.arch.data.model=64
user.language=zh
java.specification.vendor=Oracle Corporation
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.8.0_131
java.ext.dirs=C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path=C:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_131\jre\classes
java.vendor=Oracle Corporation
file.separator=\
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.endian=little
sun.desktop=windows
sun.cpu.isalist=amd64

二、使用File提供的函數獲取當前路徑: 
    File directory = new File("");//設定爲當前文件夾 
    try{ 
        System.out.println(directory.getCanonicalPath());//獲取標準的路徑 
        System.out.println(directory.getAbsolutePath());//獲取絕對路徑 
    }catch(Exceptin e){} web

    File.getCanonicalPath()和File.getAbsolutePath()大約只是對於new File(".")和new File("..")兩種路徑有所區別。 json

    # 對於getCanonicalPath()函數,「."就表示當前的文件夾,而」..「則表示當前文件夾的上一級文件夾 
    # 對於getAbsolutePath()函數,則無論」.」、「..」,返回當前的路徑加上你在new File()時設定的路徑 
    # 至於getPath()函數,獲得的只是你在new File()時設定的路徑 windows

    好比當前的路徑爲 C:/test : 
    File directory = new File("abc"); 
    directory.getCanonicalPath(); //獲得的是C:/test/abc 
    directory.getAbsolutePath();    //獲得的是C:/test/abc 
    direcotry.getPath();                    //獲得的是abc 服務器

    File directory = new File("."); 
    directory.getCanonicalPath(); //獲得的是C:/test 
    directory.getAbsolutePath();    //獲得的是C:/test/. 
    direcotry.getPath();                    //獲得的是. oracle

    File directory = new File(".."); 
    directory.getCanonicalPath(); //獲得的是C:/ 
    directory.getAbsolutePath();    //獲得的是C:/test/.. 
    direcotry.getPath();                    //獲得的是.. app

三、類的路徑:
    (1)Class.class.getClass().getResource("/").getPath() 
        結果:/D:/WorkSpace/smart/target/classes/
    (2)Thread.currentThread().getContestClassLoader().getResource("")
        結果:file:/D:/WorkSpace/smart/target/classes/
    (3)MyTest.class.getClassLoader().getResource("")
        結果:file:/D:/WorkSpace/smart/target/classes/
    (4)ClassLoader.getSystemResource("")
        結果:file:/D:/WorkSpace/smart/target/classes/
    (5)MyTest.class.getResource("")
        結果:file:/D:/WorkSpace/smart/target/classes/cn/smart/test/
    (6)MyTest.class.getResource("/")
        結果:file:/D:/WorkSpace/smart/target/classes/eclipse

2、 在web中獲取路徑
    一、JSP中獲取路徑
        (1)獲得包含工程名的當前頁面全路徑:
            request.getRequestURI();// /TEST/test.jsp 
        (2)獲得工程名:
            request.getContextPath();// /TEST 
        (3)獲得當前頁面所在目錄下全名稱:
            request.getServletPath();// /TEST/test.jsp 
        (4)獲得頁面所在服務器的全路徑:
            application.getRealPath("test.jsp");// D:/test/WebRoot/TEST/test.jsp 
        (5)獲得頁面所在服務器的絕對路徑:
            absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent(); 
        結果:D:/test/WebRoot/TEST webapp

    二、在Servlet中取得路徑:
        (1)獲得工程目錄:
            request.getSession().getServletContext().getRealPath("");
            結果:E:/Tomcat/webapps/TEST 
        (2)獲得IE地址欄地址:
            request.getRequestURL() 
            結果:http://localhost:8080/TEST/test 
        (3)獲得相對地址:
            request.getRequestURI() 
            結果:/TEST/test jsp

相關文章
相關標籤/搜索