最近遇到在java代码中读取自带文件,只知道可以采用getResourceAsStream,但对具体细节了解不甚详细,在网上查阅了相关资料,对各种情况做了一些汇总,mark一下。
以下是需要读取文件的各种场景:
- 文件和java文件的相对位置,各个properties文件
现在需要读取各个properties文件
测试代码
我们在TestPath.java中读取各个文件,主要采用
Class.getResourceAsStream(String path)
和
Class.getClassLoader().getResourceAsStream(path)
两种方式,测试代码如下:
/**
* Class.getResourceAsStream
*
* @param path
* 各个文件的路径
*/
public static void getResourceAsStream(String path) {
InputStream input = TestPath.class.getResourceAsStream(path);
showPath(input);
}
/**
* Class.ClassLoader.getResourceAsStream
*
* @param path
* 各个文件的路径
*/
public static void classLoadGetResourceAsStream(String path){
InputStream input = TestPath.class.getClassLoader().getResourceAsStream(path);
showPath(input);
}
/**
* print content in per file
* @param input
*/
public static void showPath(InputStream input) {
Properties prop = new Properties();
if (null == input) {
throw new RuntimeException("can not load properties: " + input);
}
try {
prop.load(input);
input.close();
for (Entry<Object, Object> entry : prop.entrySet()) {
System.out.println(entry.getKey().toString() + "="
+ entry.getValue().toString());
}
} catch (IOException e) {
throw new RuntimeException("can not read properties: " + input);
}
}
两种方式和文件路径的具体写法
:
- 在TestPath.java中采用Class.getResourceAsStream()
public static void testGetResourceAsStream() {
System.out.println("文件与当前class在同一目录");
getResourceAsStream("current_path.properties");
getResourceAsStream("/com/java/path/test/current_path.properties");
System.out.println("文件在当前class上级目录");
getResourceAsStream("../parent_path.properties");
getResourceAsStream("/com/java/path/parent_path.properties");
System.out.println("文件与当前class在不同的package");
getResourceAsStream("/com/java/pathanother/another_package.properties");
System.out.println("文件在class根目录");
getResourceAsStream("/root_path.properties");
System.out.println("文件位于的依赖第三方包");
getResourceAsStream("/META-INF/maven/commons-logging/commons-logging/pom.properties");
}
输出:
文件与当前class在同一目录
path=com.java.path.test
path=com.java.path.test
文件在当前class上级目录
path=com.java.path
path=com.java.path
文件与当前class在不同的package
path=com.java.pathanother
文件在class根目录
path=toot
文件位于的依赖第三方包
version=1.1.1
groupId=commons-logging
artifactId=commons-logging
- 采用Class.ClassLoader.getResourceAsStream
public static void testClassLoadGetResourceAsStream() {
System.out.println("文件与当前class在同一目录");
classLoadGetResourceAsStream("com/java/path/test/current_path.properties");
System.out.println("文件在当前class上级目录");
classLoadGetResourceAsStream("com/java/path/parent_path.properties");
System.out.println("文件与当前class在不同的package");
classLoadGetResourceAsStream("com/java/pathanother/another_package.properties");
System.out.println("文件在class根目录");
classLoadGetResourceAsStream("root_path.properties");
System.out.println("文件位于的依赖第三方包");
classLoadGetResourceAsStream("META-INF/maven/commons-logging/commons-logging/pom.properties");
}
输出:
文件与当前class在同一目录
path=com.java.path.test
文件在当前class上级目录
path=com.java.path
文件与当前class在不同的package
path=com.java.pathanother
文件在class根目录
path=toot
文件位于的依赖第三方包
version=1.1.1
groupId=commons-logging
artifactId=commons-logging
分享到:
相关推荐
关于java 读取eclipse下文件相对路径 关于Java的文件相对路径问题一直 ...
文件的路径通常有 相对路径 与 绝对路径。 2.1 相对路径 以当前文件为基准进行一级级目录指向被引用的资源文件。在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变...
格式化文件操作,将数据按照模板写入新文件,正则表达式替换模板指定内容,文件读写,stateprocess.java 项目运行文件
今天小编就为大家分享一篇浅谈java 中文件的读取File、以及相对路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
// entry以相对路径的形式设置。以文件夹C:\temp例如temp\test.doc或者test.xls 如果设置不当,会出现拒绝访问等错误 // 分别处理单个文件/目录的entry if(rootStr.equals(tempFile.getPath())){ ...
主要介绍了springboot如何获取相对路径文件夹下静态资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
包括其子目录中、将目录中的内容添加到列表、返回文件的URL地址、从文件路径得到文件名、将DOS/Windows格式的路径转换为UNIX/Linux格式的路径、...得到相对路径、检查给定目录的存在性、读取文件的内容、获取图片文件
下面小编就为大家带来一篇Java 获取Web项目相对webapp地址的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
技术点:1、使用htmlparser解析html文件,得到html代码里的js、css、img链接 2、将相对路径的链接转变成绝对路径,并读取资源 3、将css和js合并到html 4、将图片转换成base64编码,写入标签的src
hm-tools-js-css 功能:根据URL请求参数将多个javascript文件合并成一个javascript文件返回...支持替换css文件中url引用资源的相对路径为可访问的绝对路径。支持使用yuicompressor对js,css文件内容进行实时压缩、混淆
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...
以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
可以调用MailAccount(String accountSettingFileBaseClassLoader)读取相对路径的Setting文件,配置参考mailAccount-example.setting 2、com.baijob.commonTools.mail.MailUtil邮件发送工具类,方法请参考注释 此...
一般的dbf文件都是数据库操作文件,用c语言进行操作的dll很多,但是java操作的很少,我找到了一个javadbf-0[1].4.0.jar的包,但是操作效果很不理想,尤其是末尾空格和乱码问题,于是我在这个jar包的基础上进行进一步...
可以用相对路径,如果在根目录,则要用.开始,表示当前目录。 该DEMO文件只对《php上传apk后自动提取apk包的信息》。具体项目运用,请根据自己项目需求改动。如有疑问,欢迎与我交流。 将该文件放至php运行目录下...
可以用相对路径,如果在根目录,则要用.开始,表示当前目录。 该DEMO文件只对《php上传apk后自动提取apk包的信息》参见:http://blog.csdn.net/zm2714/article/details/7938749,中的代码做稍微更改。具体项目运用...
// 使用了classpath:前缀,这样,FileSystemXmlApplicationContext也能够读取classpath下的相对路径 // ApplicationContext factory = new FileSystemXmlApplicationContext("classpath:appcontext.xml"); // ...
最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。 搭建环境 将下载后的文件...
JamSpell Java绑定一个... 该文件应包含要加载的库的资源路径(相对或绝对),该资源路径将被复制到磁盘并加载。 要添加对库不提供内置支持的新平台的支持,请为目标平台编译位于cpp的CMake项目,将其放置在资源类路径
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...