Java动态获取项目根目录和tomcat的绝对路径

 2024-01-23 00:04:00  阅读 0

前言

开发过程中经常会用到文件的读写,这就不可避免地涉及到路径问题。 使用固定的绝对路径当然方便,但会导致程序的可移植性较差。 例如,如果代码硬编码为在E盘上创建文件,而移植的环境中没有E盘,那么只能更改代码。 ; 或者你需要调用D盘一个很长的路径中的自定义文件,而这个文件路径不在项目文件夹中。 在复制项目代码时很容易错过这个自定义文件,从而给项目的交接带来问题。 不必要的麻烦。 如果我们将自定义的配置文件或者其他需要访问的文件放在项目根目录下的某个文件夹中,并在运行时动态获取项目根目录,那么可以大大提高项目的可移植性。 注意,Web程序的项目根目录在根目录的\项目名下,而Java桌面程序的项目根目录在源代码所在文件夹下。

这个想法是我第一次做涉及文件访问的项目时就想到的,但在实践中经常失败,因为不同情况(Web程序、Java桌面程序)获取项目根目录的方法不同。 同样, (new File("")).() 方法在 Web 环境或桌面程序环境中具有不同的结果。 如果不一一分析和测试,你就会感到困惑。 所以最近我花了一些时间研究了一下,发现一点也不复杂。 我的测试环境是:.6.0; .0.1,其根目录为“D:\Files\Java\.0.1”; 项目源文件所在的根目录是“D:\CHLOE\IT\java\\tests”。

文本

1、在jsp文件或文件中,可以通过().(“/”)获取项目根目录的绝对路径。

.jsp

1 <body>
2     

jsp文件中获得项目根目录绝对路径

3 <% 4 String realPath=getServletContext().getRealPath("/");//项目绝对路径 5 %> 6 项目根目录的绝对路径为:<%=realPath %> 7 8

访问结果:

获取jsp文件中项目根目录的绝对路径

项目根目录的绝对路径为:D:\Files\Java\.0.1\\tests\

您可以在 中使用相同的方法,并得到相同的结果。 毕竟jsp文件中的内容本质上是同一个东西。 ().("/") 非常有用,但它仅适用于 jsp 文件和媒体,因为这是一个 API。

2、在Java桌面程序中,可以通过(new File("")).()获取项目根目录(下面不是)。

.jsp

 1 package chloe.aboutpath;
 2 
 3 import java.io.File;
 4 public class PathTest 
 5 {
 6     static String abspath;
 7    static public String getPath()
 8    {
 9        
10        File file=new File("");
11        abspath=file.getAbsolutePath();
12        return abspath;
13    }
14    public static void main(String args[])throws Exception
15    {
16        System.out.println(getPath());
17    }
18 }

运行结果为:

D:\CHLOE\IT\java\\tests

3、下面运行的类中,(new File("")).()得到的路径在安装路径下的bin文件夹下。 将获取的路径字符串中最后一个“bin”去掉,添加“\\项目文件夹名称”。

运行测试代码后发现,只要是环境中运行的代码,比如Jsp、被调用的Java类、被调用的Java类调用的Java类等,都是用(new File("" )).() 获取到的路径都是在根目录下的bin文件夹下。 测试代码与.java中基本相同,这里不再赘述。

总结

大多数情况下,我们都是用Java开发Web程序。 根据我个人的习惯,如果需要在jsp文件或者中使用项目的根目录,就使用().(“/”),因为这样最方便,不需要进一步处理。 如果需要在其他普通类中获取,称为项目根目录,使用(new File("")).(),然后做一些处理。 另外,jsp文件中资源的相对路径,除非另有说明,都是相对于文件位置而言的。 可以通过在路径字符串前面添加“..”进入上一级文件夹并继续定位,如“..//.js”; 默认情况下,指定form时应使用“//”,因为默认生成时web.xml的-项中使用了该form。

标签: 目录 路径 文件

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码