`
Luob.
  • 浏览: 1578680 次
  • 来自: 上海
社区版块
存档分类
最新评论

Java的文件路径

    博客分类:
  • Java
阅读更多
Java中使用的路径,分为两种:绝对路径和相对路径。归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的!

在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径。

如果是Servlet , Action , Controller, 或则Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext, 然后通过ServletContext.getRealPath("/")来获取当前应用在服务器上的物理地址。

如果在类中取不到ServletContext时, 有两种方式可以做到:

1. 利用Java的类加载机制 调用 XXX.class.getClassLoader().getResource(""); 方法来获取到ClassPath , 然后处理获得WebRoot目录,这种方式只能是该class在WebRoot/WEB-INF/classes下才能生效, 如果该class被打包到一个jar文件中, 则该方法失效。这时就应该用下面一种方式。

2. spring框架的思路, 在WEB-INF/web.xml中 , 创建一个webAppRootKey的param, 指定一个值(默认为webapp.root)作为键值, 然后通过Listener , 或者Filter , 或者Servlet 执行String webAppRootKey = getServletContext().getRealPath("/"); 并将webAppRootKey对应的webapp.root 分别作为Key , Value写到System Properties系统属性中。之后在程序中通过System.getProperty("webapp.root")来获得WebRoot的物理路径。

根据第二种的思路,我们还可以再扩展一下。不过对于在部署在一台服务器中的应用来说,若还不是你所需请再往下看。

下面是一些得到classpath和当前类的绝对路径的一些方法。你可使用其中的一些方法来得到你需要的资源的绝对路径:

1. DebitNoteAction.class.getResource("")

得到的是当前类FileTest.class文件的URI目录。不包括自己!

如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

atacarnet/src/com/evi/modules/atacarnet/action/

2. DebitNoteAction.class.getResource("/")

得到的是当前的classpath的绝对URI路径。

如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

3. Thread.currentThread().getContextClassLoader().getResource("")

得到的也是当前ClassPath的绝对URI路径

如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

4. DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

5. 取得服务器相对路径

System.getProperty("user.dir")

例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin

我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法

6. 取得项目中的绝对路径

一般用request.getRealPath("/")或request.getRealPath("/config/")

但现在不提倡使用request.getRealPath("/")了,大家可试用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径

要取得src的文件非常容易,因为src是默认的相对目录,比如你说要取得src下com目录的test.java文件,你只需要这样就够了

File f = new File(com/test.java);

但如果我要取得不在src目录或者WebRoot目录下的文件呢,而是要从src或者WebRoot同级的目录中取呢,比如说doc吧

我的硬方法是这样实现的:

String path = this.getServletContext().getRealPath("/");

Properties p = new Properties();

p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));

System.out.println(p.getProperty("driverName"));
分享到:
评论

相关推荐

    Java文件路径详解

    Java 文件路径详解 Java 文件路径详解是一种在 Java 中获取文件路径的方式。它可以将文件路径转换为 InputStream,以便于读取文件的内容。在 Java 中,有两种方式可以获取文件路径,即使用 Class....

    java文件路径获取

    java文件路径获取方法应用总结,非常好

    java文件路径操作详细(转载)

    Java文件路径操作是Java开发中常见且重要的任务,无论是在读写文件、处理资源还是进行系统交互时,都需要对文件路径进行操作。本篇将详细探讨Java中的文件路径处理技术,主要涵盖以下知识点: 1. **File类**: ...

    java 文件路径小工具

    java 文件路径小工具 谁用谁知道 管理windows下的目录文件

    关于Java文件路径问题

    这篇博客文章“关于Java文件路径问题”可能探讨了Java中处理文件路径的常见挑战和解决方案。 在Java中,文件路径可以是绝对路径或相对路径。绝对路径是从根目录开始的完整路径,它指明了文件的确切位置。相对路径则...

    java文件路径操作详细[归类].pdf

    Java文件路径操作是Java开发中常见且重要的任务,尤其是在处理资源文件、配置文件或进行文件系统交互时。本文将深入探讨Java中与路径相关的概念、类型以及最佳实践。 首先,Java中的路径分为绝对路径和相对路径,...

    Java 解决中文路径问题

    - 在Windows系统中,可以修改系统的区域和语言设置,确保文件路径的默认编码与Java期望的编码一致。 6. 第三方库支持: - 使用第三方库,如Apache Commons IO或Google的Guava,它们提供了一些工具类来帮助处理...

    JAVA文件路径详细讲解[文].pdf

    JAVA文件路径详细讲解[文].pdf

    java 选择保存文件的路径

    java 选择文件夹 输入需要保存的文件名称 保存

    文件路径的正则表达式

    其中包括windows和linux文件路径的正则表达式;去除空格和斜杠转换的replaceall方法

    java遍历文件目录生成树结构txt文件

    这是Java标准库中的一个核心类,用于表示文件和目录路径名。它提供了许多方法,如`list()`、`listFiles()`等,可以用来获取指定目录下的文件或子目录列表。在`Dir.java`中,开发者可能使用了`listFiles()`方法递归地...

    java文件上传程序

    7. 文件路径处理:Java 文件上传程序需要处理文件路径,以便正确地读取和写入文件。在客户端,我们需要使用 IOUtil 类来获取文件路径,并将其传递给服务器端。 知识点:Java 文件路径处理、IOUtil 类 8. 事件处理...

    PathUtils 路径拼接工具类

    获取资源在不同系统下路径,拼接资源在不同系统下的路径。

    Java获得某个路径下的所有文件列表,并写入指定文件

    创建一个`BufferedWriter`用于写入文件,然后将每个文件路径转换为字符串并写入: ```java BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt")); stream.forEach(path -> { try { ...

    用java通过文件操作实现最短路径问题

    下面我们将详细讨论如何在Java中通过文件操作来解决最短路径问题。 首先,我们需要了解最短路径算法。其中,Dijkstra算法和Floyd-Warshall算法是两种常用的方法。Dijkstra算法适用于单源最短路径问题,而Floyd-...

    Java中获取文件路径的几种方式

    Java中获取文件路径的几种方式。 关于绝对路径和相对路径

    java读取配置文件

    在Java编程中,读取配置文件是常见的任务,特别是在开发需要灵活配置的系统时。配置文件通常用于存储应用程序的设置,如数据库连接信息、服务器端口、第三方服务的API密钥等,这些信息可能需要根据不同的环境或需求...

    java中获取路径

    java、servlet、jsp、class等等中如何获得所在的路径

    DownloadUtil(JAVA下载网络文件,解决路径或文件名含中文问题).java

    JAVA下载网络文件,解决路径或文件名含中文问题的工具类!

    深入分析java文件路径的详解

    Java中的文件路径是编程中非常基础且重要的概念,特别是在处理文件操作、资源配置和Web应用程序时。本文将深入探讨Java中的绝对路径与相对路径,并提供在不同场景下获取资源路径的方法。 首先,Java中的路径分为...

Global site tag (gtag.js) - Google Analytics