java 系统当前路径_java获取当前路径的几种方法

JAVA 中获取路径:

一、在类中

1、利用System.getProperty()函数获取当前工程的路径:

System.getProperty("user.dir");//结果:D:\WorkSpace\smart

//user.dir指定了当前的路径

另外:System.getProperty()中的字符串参数如下:

@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

2、使用File提供的函数获取当前路径:

File directory = new File("");//设定为当前文件夹

try{

System.out.println(directory.getCanonicalPath());//获取标准的路径

System.out.println(directory.getAbsolutePath());//获取绝对路径

}catch(Exceptin e){}

File.getCanonicalPath()和File.getAbsolutePath()大约只是对于new File(".")和new File("..")两种路径有所区别。

# 对于getCanonicalPath()函数,“."就表示当前的文件夹,而”..“则表示当前文件夹的上一级文件夹

# 对于getAbsolutePath()函数,则不管”.”、“..”,返回当前的路径加上你在new File()时设定的路径

# 至于getPath()函数,得到的只是你在new File()时设定的路径

比如当前的路径为 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();                    //得到的是.

File directory = new File("..");

directory.getCanonicalPath(); //得到的是C:/

directory.getAbsolutePath();    //得到的是C:/test/..

direcotry.getPath();                    //得到的是..

3、类的路径:

(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/

二、 在web中获取路径

1、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

2、在Servlet中取得路径:

(1)得到工程目录:

request.getSession().getServletContext().getRealPath("");

结果:E:/Tomcat/webapps/TEST

(2)得到IE地址栏地址:

request.getRequestURL()

结果:http://localhost:8080/TEST/test

(3)得到相对地址:

request.getRequestURI()

结果:/TEST/test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值