第一步: 先获得classpath路径
String classpath = thisgetClass()getResource("/")getPath()replaceFirst("/", "");
这样子可以得到classpath路径,类似于:
F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/WEB-INF/classes/
然后把WEB-INF/classes截取就能获得WebAPP目录啦:
String webappRoot = classpathreplaceAll("WEB-INF/classes/", "");
得到的结果就是:
F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/
通过这个路径你就能获取该文件夹下的所有文件啦
Class类中的方法:
1、URL getResource(String name)
查找带有给定名称的资源
如果在eclipse中编写并运行
参数name为"",""时
file:/D:/JAVA%20IDE/eclipse32/work/MyTest/bin/com/hss/load/
为"/"时
file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/
2、InputStream getResourceAsStream(String name)
查找具有给定名称的资源
与1类似,只是形式不同
非常奇怪的是如果不用IDE,而只将文件放于硬盘的一处,得到的结果只是(无论是","")
file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/
ClassLoader类中的方法
1、URL getResource(String name)
查找具有给定名称的资源。
参数name为"",""时
ur1:file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/
须注意的是该classloader是系统类加载器,其他加载器也一样
2、InputStream getResourceAsStream(String name)
返回读取指定资源的输入流。
3、Enumeration<URL> getResources(String name)
查找所有给定名称的资源。
4、static URL getSystemResource(String name)
从用来加载类的搜索路径中查找具有指定名称的资源。
name只能是"",或者"",否则得到的是null
输出结果是 file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/
5、static InputStream getSystemResourceAsStream(String name)
从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源。
以4相似,只是返回的是InputStream
6、static Enumeration<URL> getSystemResources(String name)
从用来加载类的搜索路径中查找所有具有指定名称的资源。
name只能是"",或者"",否则得到的是null
输出结果是 file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/,
file:/D:/JAVA%20IDE/eclipse32/work/MyTest/bin/(测试类的class文件位于此目录)
总结:一般使用Class的getResource("/")获取当前类路径(包所在的顶层目录),使用getResource("")获取当前类的具体存放路径(具体到包目录的最底层如comhssservletMyServlet时,获取的路径将是com/hss/servlet)
package test;
public class Test {
public static void main(String[] args) throws Exception {
//Systemoutprintln(TestclassgetName());
Class<>[] classes = TestclassgetDeclaredClasses();
for (Class<> clazz : classes) {
Systemoutprintln(clazzgetName());
//输出testTest$A、testTest$B,要获得后面的类名A,自己做一下字符串的截取就行了。
}
}
class A {
}
class B {
}
}
java获取根路径有两种方式:
1)在servlet可以用一下方法取得:
requestgetRealPath(“/”)
例如:filepach = requestgetRealPath(“/”)+”//upload//”;
2)不从jsp,或servlet中获取,只从普通java类中获取:
String path = getClass()getProtectionDomain()getCodeSource()getLocation()getPath();
SAXReader() saxReader = new SAXReader();
if(pathindexOf(“WEB-INF”)>0){
path = pathsubstring(0,pathindexOf(“/WEB-INF/classes”)+16);
// ‘/WEB-INF/classes’为16位
document = saxReaderread(path+filename);
}else{
document = saxReaderread(getClass()getResourceAsStream(filename));
}
在java中获得文件的路径在我们做上传文件 *** 作时是不可避免的。 web 上运行 1:thisgetClass()getClassLoader()getResource("/")getPath(); thisgetClass()getClassLoader()getResource("")getPath(); 得到的是 ClassPath的绝对URI路径。
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:requestgetRequestURI(),结果:/TEST/testjsp。
(2)得到工程名:requestgetContextPath(),结果:/TEST。
(3)得到当前页面所在目录下全名称:requestgetServletPath()。结果:如果页面在jsp目录下 /TEST/jsp/testjsp。
(4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp"),结果D:/resin/webapps/TEST/testjsp。
(5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent();
结果:D:/resin/webapps/TEST。
拓展:在类中取得路径的方法
(1)类的绝对路径:String u=ClassclassgetClass()getResource("/")getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:SystemgetProperty("userdir")
结果:D:/TEST
方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。
方式二:采用ResourceBundle类读取配置信息,
优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取properties文件。
方式三:采用ClassLoader方式进行读取配置信息
优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息
缺点:只能加载类classes下面的资源文件。
方法4 getResouceAsStream
XmlParserHandlerclassgetResourceAsStream 与classloader不同
Class[] getDeclaredClasses()
返回类中定义的公共、私有、保护的内部类
Class[] getClasses()
返回类定义的公共的内部类,以及从父类、父接口那里继承来的内部类
很多朋友都想知道java如何获取当前目录路径?下面就一起来了解一下吧~
1、利用SystemgetProperty()函数获取当前路径:
Systemoutprintln(SystemgetProperty("userdir"));//userdir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹 try{ Systemoutprintln(directorygetCanonicalPath());//获取标准的路径 Systemoutprintln(directorygetAbsolutePath());//获取绝对路径 }catch(Exceptin e){} FilegetCanonicalPath()和FilegetAbsolutePath()大约只是对于new File("")和new File("")两种路径有所区别。 # 对于getCanonicalPath()函数,“"就表示当前的文件夹,而”“则表示当前文件夹的上一级文件夹 # 对于getAbsolutePath()函数,则不管””、“”,返回当前的路径加上你在new File()时设定的路径 # 至于getPath()函数,得到的只是你在new File()时设定的路径 比如当前的路径为 C:/test : File directory = new File("abc"); directorygetCanonicalPath(); //得到的是C:/test/abc directorygetAbsolutePath(); //得到的是C:/test/abc direcotrygetPath(); //得到的是abc File directory = new File(""); directorygetCanonicalPath(); //得到的是C:/test directorygetAbsolutePath(); //得到的是C:/test/ direcotrygetPath(); //得到的是 File directory = new File(""); directorygetCanonicalPath(); //得到的是C:/ directorygetAbsolutePath(); //得到的是C:/test/ direcotrygetPath(); //得到的是 另外:SystemgetProperty()中的字符串参数如下: SystemgetProperty()参数大全 # javaversion Java Runtime Environment version # javavendor Java Runtime Environment vendor # javavendorurl Java vendor URL # javahome Java installation directory # javavmspecificationversion Java Virtual Machine specification version # javavmspecificationvendor Java Virtual Machine specification vendor # javavmspecificationname Java Virtual Machine specification name # javavmversion Java Virtual Machine implementation version # javavmvendor Java Virtual Machine implementation vendor # javavmname Java Virtual Machine implementation name # javaspecificationversion Java Runtime Environment specification version # javaspecificationvendor Java Runtime Environment specification vendor # javaspecificationname Java Runtime Environment specification name # javaclassversion Java class format version number # javaclasspath Java class path # javalibrarypath List of paths to search when loading libraries # javaiotmpdir Default temp file path # javacompiler Name of JIT compiler to use # javaextdirs Path of extension directory or directories # osname Operating system name # osarch Operating system architecture # osversion Operating system version # fileseparator File separator ("/" on UNIX) # pathseparator Path separator (":" on UNIX) # lineseparator Line separator ("/n" on UNIX) # username User’s account name # userhome User’s home directory # userdir User’s current working directory
JAVA中获取路径 关键字: java中获取路径
1、jsp中取得路径:
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:requestgetRequestURI() 结果:/TEST/testjsp (2)得到工程名:requestgetContextPath() 结果:/TEST (3)得到当前页面所在目录下全名称:requestgetServletPath() 结果:如果页面在jsp目录下 /TEST/jsp/testjsp (4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp") 结果:D:/resin/webapps/TEST/testjsp (5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent(); 结果:D:/resin/webapps/TEST
2、在类中取得路径: (1)类的绝对路径:ClassclassgetClass()getResource("/")getPath() 结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/ (2)得到工程的路径:SystemgetProperty("userdir") 结果:D:/TEST
以上就是关于如何在java web项目中获得相对路径全部的内容,包括:如何在java web项目中获得相对路径、如何使用class,ClassLoader获取资源、java 打印getclass().getname() 如何得到内部类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)