Java Class 利用classpath来获取源文件地址
利用classpath来获取源文件地址
@author ixenos
应用场景
Properties props = new Properties(); /**
* . 代表java命令运行的目录
*
* 在java项目下,. java命令的运行目录从项目的根目录开始
*
* 在web项目下, . java命令的而运行目录从tomcat/bin目录开始 所以不能使用点.
*/
// InputStream in = new FileInputStream("./src/db.properties"); /**
* 使用类路径的读取方式 / : 斜杠表示classpath的根目录
* 在java项目下,classpath的根目录从bin目录开始
* 在web项目下,classpath的根目录从WEB-INF/classes目录开始
*/
InputStream in = JDBCUtil.class.getResourceAsStream("/db.properties"); // 加载文件信息
props.load(in);
注意:
1. 放在src下的文件会随同class文件自动拷贝到Java项目的bin目录中、或者web项目的WEB-INF/classes目录下
2. 而这里如果使用 【. 相对路径】则出错,因为,【.java】命令的运行目录在Java项目中是bin,且编译后的class文件放在bin中,而在web项目中虽是tomcat/bin,但web项目编译后得到的class文件放在WEB-INF/classes目录中,这样就导致相对路径出错!
3. 不过classpath在java和web中就有了不同的实现:
在java项目下,classpath的根目录从bin目录开始
在web项目下,classpath的根目录从WEB-INF/classes目录开始
因此可以利用class文件的相对路径来获取我们原来放在src中的被拷贝的文件
4. 下面是Class类中getResourceAsStream方法的描述:
Finds a resource with a given name. The rules for searching resources associated with a given class are implemented by the defining class loader of the class. This method delegates to this object's class loader. If this object was loaded by the bootstrap class loader, the method delegates to ClassLoader.getSystemResourceAsStream.
简单说,就是利用类加载器对classpath的访问,把相关文件放在类文件的相对路径,相关文件使用流来访问和修改
Java Class 利用classpath来获取源文件地址的更多相关文章
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- 【转】java:多网卡环境下获取MAC地址
http://blog.csdn.net/10km/article/details/78569962 JDK6以后 java.net.NetworkInterface提供了完整的方法用于获取网络设备信 ...
- 利用Shell命令获取IP地址
一 :获取单个网卡的IPv4地址,方法如下: 方法一:$/sbin/ifconfig ethX | awk '/inet addr/ {print $2}' | cut -f2 -d ":& ...
- Centos7(Linux)网络配置,自动获取ip地址
Centos7.0 Vmware 网络桥接配置,利用DHCP自动获取ip地址 首先要将Vmware10.0.3设置为桥接模式. CentOS 7.0默认安装好之后是没有自动开启网络连接的! cd / ...
- Java获取ip地址的几种方法
以下内容介绍下java获取ip地址的几种思路. 1.直接利用java.net.InetAddress类获取,不过这种方法只在windows环境下有效,在linux环境下只能获取localhost地址( ...
- java获取项目地址或tomcat绝对地址
在java项目中获取文件的路径,不管是相对路径还是绝对路径,其本质都是通过绝对路径去寻找. 获取项目地址 request.getSession().getServletContext().getRea ...
- Atitit onvif协议获取rtsp地址播放java语言 attilx总结
Atitit onvif协议获取rtsp地址播放java语言 attilx总结 1.1. 获取rtsp地址的算法与流程1 1.2. Onvif摄像头的发现,ws的发现机制,使用xcf类库1 2. 调用 ...
- Java根据ip地址获取Mac地址,Java获取Mac地址
Java根据ip地址获取Mac地址,Java获取Mac地址 >>>>>>>>>>>>>>>>>&g ...
- Java 中 利用正则表达式 获取 网页图片
import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;i ...
随机推荐
- 题解报告:hdu1205吃糖果(插空法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1205 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果, ...
- [完美方案+无懈可击]ubuntu 14.04(LTS) + GTX 980Ti显卡配置
安装好系统之后出现的问题: 1 不能上网:后来通过删除链接新建一个以太网链接(自动DHCP)重启莫名其妙就好使了. 2 分辨率只有两个:1024x ? 和 800x600. 分辨率低到让人头痛.通过查 ...
- Windows API函数大全一
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连 ...
- 关于OPPO手机的生存和程序员的发展
关于程序员私下讨论最多的话题,除了哪个编程最牛逼之外,哪款品牌的手机最牛逼也是我们谈论最多的话题之一吧!有的喜欢罗永浩,自然就是锤粉:有的喜欢苹果,称它为工业时代最优美的艺术品:当然,我想也有很多的人 ...
- TCP协议三次握手和四次握手
前言 先说一下IP协议和TCP协议,IP协议是无连接的通信协议,IP不会占用两个设备之间通信的线路,IP实际上主要负责将每个数据包路由至目的地,但是IP协议并没有能够确保数据包是否到达,传过去的数据包 ...
- Spark学习之Spark Streaming(9)
Spark学习之Spark Streaming(9) 1. Spark Streaming允许用户使用一套和批处理非常接近的API来编写流式计算应用,这就可以大量重用批处理应用的技术甚至代码. 2. ...
- 使用Xamarin.Forms跨平台开发入门 Hello,Xamarin.Forms 第一部分 快速入门
本文介绍了如何使用VisualStudio开发Xamarin.Forms 应用程序和使用Xamarin.Forms开发应用的基础知识,包括了构建和发布Xamarin.Forms应用的工具,概念和步骤. ...
- spark编译错误解决 Error:(52, 75) not found: value TCLIService
对于2.20版本可能会出现以下问题: spark\sql\hive-thriftserver\src\main\java\org\apache\hive\service\cli\thrift\Thri ...
- vue热重载
依据官网使用 webpack 的 Hot Module Replacement API,Vuex 支持在开发过程中热重载 mutation.module.action 和 getter.你也可以在 B ...
- Fragment中获取Activity的Context (转)
Fragment中获取Activity的Context时只需要this.getActivity()即可. 而不是许多人说的this.getActivity().getApplicationCo ...