java工程中的相关路径
一、路径
绝对路径: 指的是文件在系统中的真实路径(物理路径)。
相对路径: 指的是文件相对某个目录的相对路径。
对于java application 工程来说,当编写完一个类之后,class文件会编译,默认存放在bin目录中。
存放的目录结构安装包的命名依次存放。同时一些在src目录,或其他Source Fodder目录中的资源文件也会被编译到bin目录中(有些构建的不是存放在bin目录中,这根据构建工具而异)。
而当程序运行的时候,执行的就是bin目录中的class文件,读取的资源文件也是bin目录中的。
对于java web 工程来说,当编写完一个类之后,class文件默认会被编译到这个web工程下的Webapp目录下的WEB-INF生成的classes目录中。
存放的目录结构安装包的命名依次存放。同样一些在src目录,或其他Source Fodder目录中的资源文件也会被编译到classes目录中。
而我们对路径的操作基本上是基于class文件所在的目录进行的。
二、示例
1、通过class 与 ClassLoader获取路径
//testapp为工程名称
// 返回编译后的class-path路径
//路径: /D:/web-create/testapp/target/classes/
System.out.println(Thread.currentThread().getContextClassLoader().getResource("").getPath());
//路径: /D:/web-create/testapp/target/classes/com 此处的com目录必须要存在,否则会抛异常
System.out.println(ClassLoader.getSystemResource("com").getPath());
//路径: /D:/web-create/testapp/target/classes/ 编译代码后的classes路径
System.out.println(ClassLoader.getSystemResource("").getPath());
//路径: /D:/web-create/testapp/target/classes/ 编译代码后的classes路径
System.out.println(Test.class.getResource("/").getPath());
//路径: /D:/web-create/testapp/target/classes/com/ Test.class文件所在路径
System.out.println(Test.class.getResource("").getPath());
//路径: /D:/web-create/testapp/target/classes/com/Test.class Test.class文件全路径
System.out.println(Test.class.getResource("Test.class").getPath());
2、webapp中通过request,session等获取路径
HttpServletRequest request = null;
///返回web应用名称: testapp
System.out.println(request.getContextPath()); // 当前web应用的绝对路径(后面没有\) E:/web-create\testapp\src\main\resources\webapp
System.out.println(request.getSession().getServletContext().getRealPath("")); // 当前web应用的绝对路径(后面有\) E:/web-create\testapp\src\main\resources\webapp\
System.out.println(request.getSession().getServletContext().getRealPath("/")); // 当前web应用中指定目录绝对路径 E:/web-create\testapp\src\main\resources\webapp\resource\image
System.out.println(request.getSession().getServletContext().getRealPath("/resource/image")); //获取PATH目录下的子目录以集合的形式返回():[/resource/image/2015/]
System.out.println(request.getSession().getServletContext().getResourcePaths("/resource/image")); // 当前web应用中指定目录绝对路径 E:/web-create\testapp\src\main\resources\webapp\resource\image
System.out.println(request.getRealPath("/resource/image"));// 不建议使用,用 ServletContext.getRealPath()方法代替
3、文件相关路径
//路径: D:\ 工程所在根目录
System.out.println(new File("/").getAbsolutePath());
//路径: D:\web-create\testapp\com
System.out.println(new File("com").getAbsolutePath());
//路径:D:\web-create\testapp
System.out.println(new File("").getAbsolutePath());
//路径:D:\web-create\testapp
System.out.println(System.getProperty("user.dir"));
// class path 路径
System.out.println(System.getProperty("java.class.path"));
4、加载src(实际上是bin目录或classes目录下的)下的properties
//加载文件相关
InputStream is = new FileInputStream(ClassLoader.getSystemResource("").getPath() + "config.redis.pool.properties");//该种方式与下面得到的结果一致
is = Test.class.getResourceAsStream("config.redis.pool.properties");//与下面结果一样
is = Test.class.getResourceAsStream("/config.redis.pool.properties");
//InputStream is = Test.class.getResourceAsStream("/com/config.redis.pool.properties");//参数是相对于classes目录下的文件全路径
Properties properties = new Properties();
properties.load(is);
is.close();
for(Object obj :properties.keySet()){
System.out.println("key: " + obj + " value: " + properties.get(obj));
}
java工程中的相关路径的更多相关文章
- Log4j在Java工程中使用方法
Eclipse新建Java工程,工程目录如下 1.下载log4j的Jar包,在Java工程下新建lib文件夹,将jar包拷贝到此文件夹,并将其加入到路径中,即:Jar包上右键——Build Path— ...
- java工程中不能存在多个数据库连接jar包
java工程中不能存在多个数据库连接jar包 比如存在mysql-java-connector.jar的,放入mssqlserver.jar就会产生冲突.只能存在一个类型的jar包.
- 在java工程中导入jar包的注意事项
在java工程中导入jar包后一定要bulid path,不然jar包不可以用.而在java web工程中导入jar包后可以不builld path,但最好builld path.
- java工程中的.classpathaaaaaaaaaaaaaaaa<转载>
第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class. eclipse build path是ec ...
- java工程中的.classpath<转载>
第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class. eclipse build path是ec ...
- 【技巧】Java工程中的Debug信息分级输出接口
也许本文的标题你们没咋看懂.但是,本文将带大家领略输出调试的威力. 灵感来源 说到灵感,其实是源于笔者在修复服务器的ssh故障时的一个发现. 这个学期初,同袍(容我来一波广告产品页面,同袍官网)原服务 ...
- 【技巧】Java工程中的Debug信息分级输出接口及部署模式
也许本文的标题你们没咋看懂.但是,本文将带大家领略输出调试的威力. 灵感来源 说到灵感,其实是源于笔者在修复服务器的ssh故障时的一个发现. 这个学期初,同袍(容我来一波广告产品页面,同袍官网)原服务 ...
- web工程中的各种路径(eclipse开发)
目前遇到的 web 工程中要写url和路径的文件有 webContent中.jsp/.html :action src中的servlet类 : 映射地址.重定向.请求转发.访问资源文件(webCont ...
- Java工程中各种带有O的对象分类笔记
在Java工程里面,我们总会碰到各种不同的带有O的对象, 对于一个小白来说,经常会混淆这些对象的使用场景,所以在这里mark一下,让自己的代码更加规范,但这个也是Java被诟病的地方,不同的业务需要给 ...
随机推荐
- Angular系列------AngularJS快速开始(转载)
Hello World! 开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”: 使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html. ...
- Week3 博客阅读感想和代码复审
一.关于博客阅读感想 阅读了十多篇老程序员(大多在计算机相关行业工作超过10年)关于自身经历的博客,很有感触.这里一方面总结一下看博客的收获,另一方面写点自己的感受. 首先,这些博客不少涉及到了两大类 ...
- [ORM] Entity Framework(2) CodeFirst进阶
在上一节中,实现了CodeFirst快速入门.但是很多与数据库的细节还无法自定义.以及使用EF过程中,需要注意的事项. 在本节中,会涉及到以下 EF中的连接字符串 EF的对象状态 延迟加载,为什么需要 ...
- Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室
一.聊天室简单介绍 采用nodeJS设计,基于express框架,使用WebSocket编程之 socket.io机制.聊天室增加了 注册登录模块 ,并将用户个人信息和聊天记录存入数据库. 数据库采用 ...
- C#类的继承相关总结
1.子类继承父类,会拥有父类中所规范的所有成员,但是只能是使用其中的公共成员 2.实现了继承,可以做到代码的冗余,做到代码的重用 3.实现了继承,可以方便代码的扩展与修改 4,当子类拥有与父类相同签名 ...
- 在aspx怎么引用public string getPicurl(string picurl)?
刚才在论坛上看到一帖: Insus.NET尝试做了一下,直接使用一个Img标签是无法实现.因为函数中返回的即是一个img html标签,因此在aspx页再不能使用Img了. 现在可以回到网友的问题,那 ...
- [WCF实践]1.WCF使用net.tcp寄宿到IIS中
一.IIS部分 环境:Windows Server 2008 R2 1.安装WAS,如下图所示: 2.网站net.tcp协议绑定,如下图所示: 3.网站启用net.tcp,如下图所示: 二 ...
- C#代码反编译 得到项目可运行源码
C#代码反编译 得到项目可运行源码 摘自:http://www.cnblogs.com/know/archive/2011/03/15/1985026.html 谈到"C#代码反编译&quo ...
- C#开发中Windows域认证登录2016(扩展吉日嘎拉GPM系统V4.2)
2013年搞公司的OA时,为了统一用户登录,将Windows AD的用户和OA的账号对接,OA用户名的规则就是使用Windows AD的用户名,格式举例:Troy.Cui,原理就是先进行域服务器的认证 ...
- 【jQuery基础学习】00 序
作为一个从来没有认真学过jQuery的菜来讲,我所学的都是jQuery基础. 算是让自己从0开始系统学一遍吧.学习书籍为:<锋利的jQuery>. 虽然是个序,表示一下我是个菜,但还是来几 ...