java程序读取资源文件时路径如何指定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java程序读取资源文件时路径如何指定相关的知识,希望对你有一定的参考价值。

(1)、request.getRealPath("/");//不推荐使用获取工程的根路径
(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用
(3)、request.getSession().getServletContext().getRealPath("/");//获取工程的根路径,这个方法比较好用,可以直接在servlet和jsp中使用
(4)、 this.getClass().getClassLoader().getResource("").getPath();//获取工程classes 下的路径,这个方法可以在任意jsp,servlet,java文件中使用,因为不管是jsp,servlet其实都是java程序,都是一个 class。所以它应该是一个通用的方法。
0、关于绝对路径和相对路径
1.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例 如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相对路径:相对与某个基 准目录的路径。包含Web的相对路径(html中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例 如:"./" 代表当前目录,"../"代表上级目录。这种类似的表示,也是属于相对路径。另外关于URI,URL,URN等内容,请参考RFC相关文档标准。RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,(http://www.ietf.org/rfc/rfc2396.txt)2.关于JSP/Servlet中的相对路径和绝对路径。 2.1服务器端的地址服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对 地址,他们是由客户端浏览器解析的)
1、request.getRealPath
方法:request.getRealPath("/")
得到的路径:C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\strutsTest\\
方法:request.getRealPath(".")
得到的路径:C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\strutsTest\\.
方法:request.getRealPath("")
得到的路径:C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\strutsTest
request.getRealPath("web.xml")
C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\strutsTest\\web.xml
2、request.getParameter("");
ActionForm.getMyFile();
方法:String filepath = request.getParameter("myFile");
得到的路径:D:\\VSS安装目录\\users.txt
方法:String filepath = ActionForm.getMyFile();
得到的路径:D:\\VSS安装目录\\users.txt
--------------------------------------------------
strutsTest 为工程名
myFile 在ActionForm中,为private String myFile;
在jsp页面中:为<html:file property="myFile"></html:file>
参考技术A java的api文档中,获取文件路径的类是File类,File类有两个常用方法可以得到文件路径一个是:getCanonicalPath(),另一个是:getAbsolutePath(),可以通过File类的实例调用这两个方法例如file.getAbsolutePath()其中file是File的实例对象。下面是一个具体例子:

public class PathTest

public static void main(String[] args)

File file = new File(".\\src\\baidu");
System.out.println(file.getAbsolutePath());
try

System.out.println(file.getCanonicalPath());
catch (IOException e)

e.printStackTrace();




getAbsolutePath()和getCanonicalPath()的不同之处在于,getCanonicalPath()得到的是一个规范的路径,而getAbsolutePath()是用构造File对象的路径+当前工作目录。例如在上面的例子中.(点号)代表当前目录。getCanonicalPath()就会把它解析为当前目录但是getAbsolutePath()会把它解析成为目录名字(目录名字是点号)。

java打成jar包后读取非resources文件

参考技术A 在Java项目中,需要读取resource资源目录下的文件,以及遍历指定资源目录下的所有文件,并且在读取文件时保留文件相对路径。

以上是关于java程序读取资源文件时路径如何指定的主要内容,如果未能解决你的问题,请参考以下文章

使用Java原生支持读取资源配置文件

java打成jar包后读取非resources文件

Java 获取资源文件路径

Java 获取资源文件路径

idea下包路径下资源文件加载不到的问题

ClassPath资源的读取