1、文件是demo.xml,位置在com.xxx.app包下,你可以用Class.getResourceAsStream("com/xxx/app/demo.xml")
所有classpath可访问的路径都可以用这种方式
2、file.getAbsolutePath()是获取文件当前的绝对路径,如果在Linux下,采取file.getAbsolutePath().replaceAll("\\\\", "/")后可构造java.net.URL对象:URL url = new URL("file:" + file.getAbsolutePath().replaceAll("\\\\", "/"))
3、想知道class运行的当前目录,可使用System.out.println(new File(".").getAbsolutePath())获得,默认情况下new File("/")代表的目录为:System.getProperty("user.dir")
4、相对路径表示说明:
- FileInputStream fis=new FileInputStream("images/"+id+".jpg"),表示当前运行的.class目录下有一个images目录,里面有特定的jpg图片
- FileInputStream fis=new FileInputStream("../webapps\\axis2\\WEB-INF/pojo/images/"+id+".jpg"),../表示当前目录的上一级目录
- new FileInputStream("./mysource.properties"),这样写的路径是在当前jar包退出路径下有一个文件名为mysource.properties这样的配置文件
- 在Servlet中,"/"代表Web应用的根目录
5、JSP中获得当前应用的相对路径和绝对路径
- 根目录所对应的绝对路径:request.getRequestURI()
- 文件的绝对路径 :application.getRealPath(request.getRequestURI())
- 当前web应用的绝对路径 :application.getRealPath("/")
- 取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
6、Servlet中获得当前应用的相对路径和绝对路径
- 根目录所对应的绝对路径:request.getServletPath();
- 文件的绝对路径request.getSession().getServletContext().getRealPath(request.getRequestURI())
- 当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/")
(ServletContext对象获得几种方式:
javax.servlet.()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
测试代码:
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"));
}
}
获取Java程序运行的路径 | 获取当前jar包的路径
public class MyPath {
public static String getProjectPath() {
java.net.URL url = MyPath.class.getProtectionDomain().getCodeSource().getLocation();
String filePath = null;
try {
filePath = java.net.URLDecoder.decode(url.getPath(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
if (filePath.endsWith(".jar"))
filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);
java.io.File file = new java.io.File(filePath);
filePath = file.getAbsolutePath();
return filePath;
}
public static String getRealPath() {
String realPath = MyPath.class.getClassLoader().getResource("").getFile();
java.io.File file = new java.io.File(realPath);
realPath = file.getAbsolutePath();
try {
realPath = java.net.URLDecoder.decode(realPath, "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return realPath;
}
public static String getAppPath(Class<?> cls){
//检查用户传入的参数是否为空
if(cls==null)
throw new java.lang.IllegalArgumentException("参数不能为空!");
ClassLoader loader=cls.getClassLoader();
//获得类的全名,包括包名
String clsName=cls.getName();
//此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库
if(clsName.startsWith("java.")||clsName.startsWith("javax.")) {
throw new java.lang.IllegalArgumentException("不要传送系统类!");
}
//将类的class文件全名改为路径形式
String clsPath= clsName.replace(".", "/")+".class";
//调用ClassLoader的getResource方法,传入包含路径信息的类文件名
java.net.URL url =loader.getResource(clsPath);
//从URL对象中获取路径信息
String realPath=url.getPath();
//去掉路径信息中的协议名"file:"
int pos=realPath.indexOf("file:");
if(pos>-1) {
realPath=realPath.substring(pos+5);
}
//去掉路径信息最后包含类文件信息的部分,得到类所在的路径
pos=realPath.indexOf(clsPath);
realPath=realPath.substring(0,pos-1);
//如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名
if(realPath.endsWith("!")) {
realPath=realPath.substring(0,realPath.lastIndexOf("/"));
}
java.io.File file = new java.io.File(realPath);
realPath = file.getAbsolutePath();
try{
realPath=java.net.URLDecoder.decode(realPath,"utf-8");
}catch(Exception e){
throw new RuntimeException(e);
}
return realPath;
}//getAppPath定义结束
}
使用Jar包,在Tomcat的运行结果如下:
ProjectPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\lib
RealPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes
Apppath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes
相关推荐
在Java开发过程中,遇到的问题多种多样,从环境配置到代码编写,每个环节都有可能出现问题。以下是一些关于Java开发的常见问题及其解决方法。 首先,确保Java开发环境的正确安装和配置。在Windows系统中,可以通过...
File类是Java中用来处理文件和目录的对象,它并不直接参与文件内容的读写,而是提供了诸如获取文件路径、文件名、是否为文件或目录、修改时间等元数据的方法。在处理文件或目录路径时,使用File对象可以避免平台相关...
在Java编程领域,重复文件查找是一项常见的需求,尤其是在大型项目或者资源管理中。这个程序能够帮助用户在指定的目录下高效地找出所有重复的.java和.class文件,这对于我们理解和优化项目结构、节省存储空间至关...
"blackberry java开发相关资料汇总" 这个标题表明了这是一个关于BlackBerry平台上使用Java进行应用程序开发的资源集合。BlackBerry曾是智能手机市场的先驱,尤其是在企业级应用方面,它提供了强大的Java SDK和开发...
Java开发中将程序打包成可执行的.exe安装程序是一个复杂但必要的过程,尤其对于希望在Windows平台上分发Java应用程序的开发者。以下是一个详细的步骤指南,包括使用JFrame标签的Java项目如何通过exe4j和Inno Setup...
### Java开发岗位面试题汇总分析 #### Zookeeper详解 Zookeeper是一种分布式的、开放源码的协调服务。它为分布式应用提供一致性服务,用于维护配置信息、命名、提供分布式同步和组服务等。 - **核心功能**:...
在Java开发中,使用水晶报表的关键步骤如下: 1. 添加依赖:将水晶报表的JAR库添加到项目的类路径中,这通常通过Maven或Gradle等构建工具完成。 2. 创建报表:在水晶报表设计器中创建报表模板,保存为.RPT文件。 3. ...
"Java开发常用指令全集.7z"中的文档"Java开发常用指令全集.doc"很可能是对这些重要指令的详细汇总。以下是基于Java开发的一些关键指令的详解: 1. **javac**:Java编译器,用于将源代码(.java文件)编译成可执行的...
根据提供的文件内容,可以总结出以下关于JAVA开发环境搭建的知识点: 1. JDK安装与配置 文档提到了JDK(Java Development Kit)的安装与配置,JDK是进行Java编程的必要软件开发包。安装JDK时通常包括JRE(Java ...
- **JDK**:Java开发工具包,包含了JRE以及开发工具,如编译器和调试器。 3. **JDK环境变量配置**: - **PATH**环境变量:设置可执行文件的路径,多个路径用分号或逗号分隔。 - **CLASSPATH**环境变量:指定Java...
* 建立Java开发环境,安装JDK,一般需要设置环境变量path和classpath * 编写一个Java源程序,其文件名为Test.java,则编译该源程序的命令为javac,运行该程序的命令为java,生成文档注释的命令为javadoc 选择题 1....
在Java开发领域,积累丰富的实践经验对于提升个人技能至关重要。本文将根据提供的文件信息,总结并深入探讨几个重要的Java编程知识点。 #### 1. Java与C++面向对象思想的区别 学习Java时,很多开发者都有C++背景。...
Java开发完成后,通常需要将项目打包成可分发的形式,最常见的就是jar文件。jar文件是Java的归档文件,它可以包含类、资源、元数据等,便于部署和执行。以下是两种将Java项目打包成jar文件的方法: 方法一:使用...
实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用字符串构建器追加字符 100 实例081 去掉字符串中的所有空格 101 实例082 汉字与区位码的转换 102 第5章 面向对象技术...
JasperReport与iReport是Java报表开发领域的强大工具组合,通过本手册的学习,开发者将能够掌握这些工具的基本操作和高级功能,从而在实际项目中高效地完成报表设计与开发工作。无论是入门还是进阶,这份手册都将是...