JAVA 取得当前目录的路径

在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上
1.可以在servlet的init方法里
String path = getServletContext().getRealPath("/");
这将获取web项目的全路径
例如 :E:/eclipseM9/workspace/tree/
tree是我web项目的根目录

2.你也可以随时在任意的class里调用
this.getClass().getClassLoader().getResource("/").getPath();
这将获取 到classes目录的全路径
例如 : E:/eclipseM9/workspace/tree/WEB-INF/classes/

这个方法也可以不在web环境里确定路径,比较好用

3.request.getContextPath();
获得web根的上下文环境
如 /tree
tree是我的web项目的root context

/*jsp 取得当前目录的路径
path=request.getRealPath("");
/*得到jbossWEB发布临时目录 warUrl=.../tmp/deploy/tmp14544test-exp.war/
path=C:/jboss-4.0.5.GA/server/default/tmp/deploy/tmp14544test-exp.war/

String   path   =   (String)request.getContextPath();
/*得到项目(test)应用所在的真实的路径 path=/test
String     path     =   request.getRequestURI();
/*得到应用所在的真实的路径 path=/test/admin/admindex.jsp

String   savePath=request.getRealPath(request.getServletPath());
/*得到当前文件的磁盘绝对路径  

//JAVA 取得当前目录的路径
File   file=new   File(".");  
String path=file.getAbsolutePath();
                path=file.getPath();
/*得到jboss运行目录 path=C:/jboss-4.0.5.GA/bin/

---------------------------------------------

Java相对路径 /绝对路径 总结

分类:资料栏

转自:http://www.javaeye.com/topic/117978

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中的相对地址,他们是由客户端 浏览器解析的)也就是说这时候在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http: //192.168.0.1/webapp/的。

其用到的地方有:
forward:servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以,你要forward到a
.jsp 应该这么写:request.getRequestDispatcher(“/user/a.jsp ”)这个/ 相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp 。 sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp ");%>

2.22、客户端的地址

所有的html页面中的相对地址都是相对于服务器 根目录 (http://192.168.0.1/)的,而不是(跟目录下的该Web应用的目录) http://192.168.0.1/webapp/的。 Html中的form表单的action属性的地址应该是相对于服务器根目录 (http://192.168.0.1/)的,所以,如果提交到a.jsp 为:action="/webapp/user/a.jsp "或action="<%=request.getContextPath()% >"/user/a.jsp
提交到servlet为actiom="/webapp/handleservlet" Javascript也是在客户端解析的,所以其相对路径 和form表单一样。


因此,一般情况下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上
<%=request.getContextPath()%>,以确保所引用的文件都属于Web应用中的目录。另外,应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径 ,这样当文件移动时,很容易出问题。


3. JSP/Servlet中获得当前应用的相对路径 和绝对路径

3.1 JSP中获得当前应用的相对路径 和绝对路径
根目录 所对应的绝对路径 :request.getRequestURI()
文件的绝对路径  :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()

3.2 Servlet中获得当前应用的相对路径 和绝对路径
根目录 所对应的绝对路径 :request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp .PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)

4.java 的Class中获得相对路径 ,绝对路径 的方法

4.1单独的Java类中获得绝对路径
根据java.io.File的Doc文挡,可知:
默认情况下new File("/")代表的目录为:System.getProperty("user.dir")。
一下程序获得执行类的当前路径

package org.cheng.file;   
   
import java.io.File;   
   
public class FileTest ... {   
    
public static void main(String[] args) throws Exception ... {   
         System.out.println(Thread.currentThread().getContextClassLoader().getResource(
"" ));   
   
         System.out.println(FileTest.
class .getClassLoader().getResource( "" ));   
   
         System.out.println(ClassLoader.getSystemResource(
"" ));   
         System.out.println(FileTest.
class .getResource( "" ));   
         System.out.println(FileTest.
class .getResource( " / " ));
        
// Class文件所在路径
         System.out.println( new File( " / " ).getAbsolutePath());   
         System.out.println(System.getProperty(
" user.dir " ));   
     }
   
}
  

4.2服务器中的Java类获得当前路径 (来自网络)

(1).Weblogic

WebApplication的系统文件根目录 是你的weblogic安装所在根目录
例如:如果你的weblogic安装在c:beaweblogic700.....
那么,你的文件根路径 就是c:.
所以,有两种方式能够让你访问你的服务器端的文件:
a.使用绝对路径
比如将你的参数文件放在c:yourconfigyourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相对路径
相对路径根目录 就是你的webapplication的根路径 ,即WEB-INF的上一级目录,将你的参数文件放

在yourwebappyourconfigyourconf.properties,
这样使用:
new FileInputStream("./yourconfig/yourconf.properties");
这两种方式均可,自己选择。

(2).Tomcat

在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin

(3).Resin

不是你的JSP放的相对路径 ,是JSP引擎执行这个JSP编译成SERVLET
路径 为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下

(4).如何读相对路径 哪?

在Java文件中getResource或getResourceAsStream均可

例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web

发布根路径 下WEB-INF/classes

默认使用该方法的路径 是:WEB-INF/classes。已经在Tomcat中测试。

5.读取文件时的相对路径 ,避免硬编码和绝对路径 的使用。(来自网络)
5.1 采用Spring的DI机制获得文件,避免硬编码。
参考下面的连接内容:
http://www.javajia.net/viewtopic.php?p=90213&
5.2 配置文件的读取
参考下面的连接内容:
http://dev.csdn.net/develop/article/39/39681.shtm

5.3 通过虚拟路径 或相对路径 读取一个xml文件,避免硬编码

参考下面的连接内容:
http://club.gamvan.com/club/clubPage.jsp ?iPage=1&tID=10708&ccID=8

6.Java中文件的常用操作(复制,移动,删除,创建等)(来自网络)
常用 java File 操作类
http://www.easydone.cn/014/200604022353065155.htm

Java文件操作大全(JSP中)
http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html

java文件操作详解(Java中文网)
http://www.51cto.com/html/2005/1108/10947.htm

JAVA 如何创建删除修改复制目录及文件
http://www.gamvan.com/developer/java/2005/2/264.html

总结:
通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制
删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。
建议参考URI,的RFC标准文挡。同时对Java.io.File. Java.net.URI.等内容了解透彻
对其他方面的理解可以更加深入和透彻。

这是在Java中去当前 项目根目录 的方法

java 代码

/** */ /**    
* TODO 取得当前项目根目录    
*
@author PHeH
  
* Created On 2006-12-30 17:15:41   
*/    
public class Application ... {    
            
    
/** */ /**    
      * TODO 获取根目录    
      *
@return    
      *
@author PHeH
  
      * Created On 2007-5-10 15:16:21   
     
*/    
    
public static String getRootPath() ... {    
        
// 因为类名为"Application",因此" Application.class"一定能找到    
         String result = Application. class .getResource( " Application.class " ).toString();    
        
int index = result.indexOf( " WEB-INF " );    
        
if (index == - 1 ) ... {    
             index
= result.indexOf( " bin " );    
         }
    
         result
= result.substring( 0 ,index);    
        
if (result.startsWith( " jar " )) ... {    
            
// 当class文件在jar文件中时,返回"jar:file:/F:/ ..."样的路径      
             result = result.substring( 10 );    
         }
else if (result.startsWith( " file " )) ... {    
            
// 当class文件在class文件中时,返回"file:/F:/ ..."样的路径      
             result = result.substring( 6 );    
         }
    
        
if (result.endsWith( " / " ))result = result.substring( 0 ,result.length() - 1 ); // 不包含最后的"/"    
         return result;    
     }
    
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/stark-summer/archive/2011/03/12/4829865.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang mysql curd_Go 语言操作 MySQL 之 CURD 操作

本文转载于SegmentFault社区作者&#xff1a;Meng小羽MySQL 是目前开发中最常见的关系型数据库&#xff0c;使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql-driver/mysql来实现。创建好 Go 项目&#xff0c;需要引用驱动依赖&#xff1a;go get -u githu…

02.1-元素定位(find)

常用的一些方法 一、导包 from selenium import webdriver二、打开火狐&#xff08;空白页&#xff09; b webdriver.Firefox()三、跳转到指定的网站 b.get(https://www.baidu.com/)四、将浏览器页面最大化 b.maximize_window()五、通过F12可查看当前的贴吧为超链接形式 …

快速傅里叶变换(FFT)——按时间抽取DIT的基

目录【1】前言1、DIF计算量2、利用性质改善【2】公式推导1、N 到 2*N/2a、分解原序列b、分解后的DFT变换c、一系列化简操作之后d、蝶形信号流e、计算量总结2、N/2 到 2*N/4a、分解X2(k)序列b、蝶形信号流&#xff08;2列&#xff09;3、N/4 到 2*N/8a、蝶形信号流&#xff08;3…

Python字符串| 带示例的format()方法

String.format()方法 (String.format() Method) format() method is used to format the string (in other words - we can say to achieve the functionality like printf() in C language). format()方法用于格式化字符串(换句话说&#xff0c;我们可以说实现了C语言中类似于…

PLSQL Developer使用技巧

1、PL/SQL Developer记住登陆密码在使用PL/SQL Developer时&#xff0c;为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码&#xff1b;设置方法&#xff1a;PL/SQL Developer 7.1.2 ->tools->Preferences->Oracle->Logon History &#xff0c; “St…

3月份的总结

租房子找了个黑中介&#xff0c;各种扣钱&#xff0c;合租的违约了&#xff0c;押金不要了直接一走了之&#xff0c;水费我们承担&#xff0c;中介这会儿又把责任推得一干二净&#xff0c;还耍小聪明&#xff0c;非说我是两个人住的&#xff0c;各种费用要交两份。。。我一时气…

快速傅里叶变换(FFT)——按频率抽取DIF的基

目录【1】回顾DIT【2】算法原理【3】运算特点【1】回顾DIT https://blog.csdn.net/qq_42604176/article/details/105559756 【2】算法原理 设序列点数&#xff1a;N2^M,M为正整数。将输入序列按照前一半、后一半分开。&#xff08;并非按照奇偶分&#xff09; 由于&#xf…

02.2-元素定位(XPath)

XML路径语言用来确定XML文档中某部分位置的语言XPath用于在XML文档中通过元素和属性进行导航XPath遵守W3C标准XPath节点类型&#xff1a; 元素、属性、文本、命名空间、指令处理、注释、文档 通过路径表达式从XML文档中选取节点或节点设置 表达式结果说明/xxx选取根节点xxx/xx…

android ImageView 之 android:scaleTye=

原文&#xff1a;http://juliaailse.iteye.com/blog/1409317 1、scaleType“matrix” 是保持原图大小、从左上角的点开始&#xff0c;以矩阵形式绘图。 2、scaleType“fitXY” 是将原图进行横方向&#xff08;即XY方向&#xff09;的拉伸后绘制的。 3、scaleType“fitStart…

acquire方法_Python锁类| 带有示例的acquire()方法

acquire方法Python Lock.acquire()方法 (Python Lock.acquire() Method) acquire() is an inbuilt method of the Lock class of the threading module in Python. acquisition()是Python中线程模块的Lock类的内置方法。 This method is used to acquire a lock, either block…

VSS2008 安装silverlight3.0步骤

需要的Q我359273753 我是新手不知道在哪里上传附件 汗一个转载于:https://www.cnblogs.com/ganler1988/archive/2011/03/17/1987367.html

php字符串对象,PHP字符串到对象名称

好的我有一个字符串……$a_string "Product";我想在调用这样的对象时使用这个字符串&#xff1a;$this->$a_string->some_function();狄更斯如何动态调用该对象&#xff1f;(不要以为我在PHP 5心中)解决方法:所以你要使用的代码是&#xff1a;$a_string &quo…

莫比乌斯函数---C++

【问题描述】 莫比乌斯函数&#xff0c;数论函数&#xff0c;由德国数学家和天文学家莫比乌斯(Mobius&#xff0c;1790-1868)提出。梅滕斯(Mertens)首先使用μ(n)作为莫比乌斯函数的记号。而据说&#xff0c;高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数。莫比乌斯函数在数…

Opencv——findContours函数再探(由轮廓联想连通域)

目录关于调参的一些思考分析图像的一些角度面积、周长、矩形度、圆形度、宽长比例1&#xff1a;找出汽车轮毂圆孔&#xff08;从轮廓和连通域两个角度&#xff09;例2&#xff1a;找出芯片中间正方形物体例3&#xff1a;桌面上橘色物体总结关于调参的一些思考 合理的参数设置&…

stl vector 函数_vector :: crend()函数以及C ++ STL中的示例

stl vector 函数C vector :: crend()函数 (C vector::crend() function) vector::crend() is a library function of "vector" header, it is used to get the first element of a vector from reverse ending, it returns a const reverse iterator pointing to th…

.Net DateTime.ToString 格式化输出 (转载)

原文 虽然 System.DateTime 本身已经具有了不少现成的格式化输出&#xff0c;例如&#xff1a; ToLongDateString, ToShortTimeString, ToUniversalTime 等&#xff0c;但是却远远不能满足我们实际的需要&#xff0c;这就要用到了 DateTime.ToString&#xff0c;就要提到 DateT…

modelsim 编译 xilinx库

1.为单个工程加入库 在某一个目录建立工程 然后 vlib unisim vcom -work unsim *.vhd 然后就加入了unisim库 如果是windows的话&#xff0c;工程文件mpf应该是记录了这个库的信息&#xff0c;所以重新打开这个工程时&#xff0c;依然有这个库 linux&#xff0c;不用gui界面…

php 字符串匹配 like,ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法...

搜索热词ThinkPHP的数据库条件查询语句有字符串式&#xff0c;数组式书写方法字符串式即是原生式&#xff0c;数组式查询语句因书写方式与特定字符的原因比较复杂&#xff0c;下面为大家例出了常用的ThinkPHP数组式查询语句的使用方法ThinkPHP一般查询$data_gt[id]array(gt,8);…

C++---汉明距离

两个整数之间的汉明距离指的是这两个数对应二进制位不同的位置的数目。 【输入形式】 给出两个整数x和y(0<x,y<2^31)&#xff0c;用空格分隔 【输出形式】 输出他们之间的汉明距离 【样例输出】 1 4 【样例说明】 00000000 00000000 00000000 00000001 00000000 00000000…

Opencv基础画图函数——line、circle、rectangle、Rect、ellipse、polylines、putText函数的用法

目录1、line函数2、circle函数3、rectangle、Rect函数4、ellipse函数5、polylines函数6、随机初始化颜色7、putText函数总结1、line函数 line(img,(0,0),(511,511),(255,0,0),5)这个函数有5个参数&#xff0c;img是图像名称&#xff0c;起点坐标&#xff0c;终点坐标&#xff…