`

关于java读取properties文件的路径问题

    博客分类:
  • J2SE
阅读更多
之前对于JAVA读取properties文件的路径一直模棱两可,晚上百度上查了一下资料然后自己做实验验证了一下,当前做一下记录,与写的不对的欢迎大家留言指正




当前实验工程的目录如上图所示,如果我们要读取的properties文件是放到classpath目录下(即放到src目录下,eclipse会将其自动编译到bin\目录下)这个是比较容易的看下面的代码:
package org.guo.leaning.path;

import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

public class ReadFile {
	public static void main(String[] args) throws Exception {
System.err.println(ReadFile.class.getResource(""));

		System.err.println(ReadFile.class.getResource("/"));
		
		
	}
	
/*上述的两个打印记录分别打印了类加载器加载文件时所搜索的目录; 如果参数是""的话,则默认是类路径(即当前类所处的classpath路径)开始找,上述第一个输出结果为:file:/E:/workspace/practice/bin/org/guo/leaning/path/   如果参数为"/"时,则从calsspath的跟路径开始找 输出的结果为:file:/E:/workspace/practice/bin/  有了上述两个路径作为参照,只要我们的properties文件放置在classpath跟目录下 就都可以实用类加载器找到该文件 */

private static String getPropsValue(String key) throws Exception {
InputStream inputStream = ReadFile.class.getClassLoader().getResourceAsStream("11.properties");

		props.load(inputStream);
		return props.getProperty(key);
}
/*
getResourceAsStream()方法即使用类加载器找到相应文件后转化为InputStream的一个方法,跟new File()然后构造一个InputStram是一样的
结合第一张图看:
(1):如果我想加载跟ReadFile处于同一目录下的11.properties文件,则参数为"11.properties,因为如果不写/默认是从当前类路径下开始加载的"
(2):如果我想加载org.guo.leaning包下面的文件则参数为"/org/guo/leaning/11.properties"因为我们是以/开头,所以是从calsspath根路径开始寻找,按照包结构写路径即可,看下classpath(默认bin)编译的路径位置就清楚了
(3):如果我想加载src根目录下的11.properties文件,则参数值为"/11.properties"原理同上

*/


//上述的情况都是在properties文件在classpath的情况下,使用的,如果我有个个properties文件不再classpath目录下,比如:我在项目根路径下建立了一个文件夹config里面有个11.proerties文件,那么我们该如何加载呢,此时我们就不能使用classLoader的相关方法了,因为他只能找classpath路径下的:

private static String getPropsValue(String key) throws Exception {
		Properties props = new Properties();
		File f = new File("E:\\workspace\\practice\\config\\11.properties");
		props.load(new FileInputStream(f));
	         props.load(inputStream);
		return props.getProperty(key);
	}

/*方法改为上述即可,即先建立一个文件,文件的路径要明确指出配置文件的路径,当然我们在写程序时可能不会直接写死,会做相关的处理将该路径得到。然后得到该文件的输入流即可。非classpath路径下配置文件的读取应该有更好的方式,但是我还没发现,希望有好方法的网友留言告诉我 谢谢  */


最后一个文件夹会不会包含在classpath路径下,主要在应用的.classpath文件下配置 如下:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
	<classpathentry kind="output" path="bin"/>
</classpath>
  • 大小: 6.8 KB
分享到:
评论

相关推荐

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    Java读取Properties文件的六种方法

    详细描写了java读写配置文件的六种读写办法.

    java properties文件读取

    这是做项目中,集成第三东西需要些配置,我抽取到属性文件中,然后写了个公用类统一调用,基本就是key返回具体值,属性文件位置自己可以调整,然后类中修改获取路径就可以了。目前我的属相文件放置在src下

    使用java读写properties文件属性

     我们要做的第一步是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 InputStream的子类FileInputStream将属性文件读取到Properties对象中,知道prop.properties的路径,我们...

    超详细!java访问windows共享目录并下载文件

    java调用cmd命令实现访问windows共享目录(需不需要密码均可),然后根据指定文件路径下载文件到我们自己配置的本地目录,main函数为测试代码

    java属性文件读取

    读取自定义属性文件内容,可以自己定义属性文件的名字,任何路径都可以

    属性文件读写(java)

    import java.util.Properties; /** * @ProjectName : JavaTest * @PackageName : org.fenet.javamail * @FileName : PropertiyFileReader.java * @Describe : * @CreateTime : 2008-9-3下午04:07:01 * @...

    jdbc.properties

    当配置文件用,在里面读取一些关于路径方面的设置(如ant中的build.properties) 存放一组配置.(类似win下ini, 还要简单些, 因为没有section) 由于难以表达层次, 复杂点可以用xml做配置. 通俗点讲就相当于定义一个...

    properties乱码

    解决properties乱码 j2ee只要将该文件复制到你的文件中输入要处理的的文件的路径和要输入的内容运行就可以解决中文乱码问题

    struts2实现多文件上传下载

    2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有文件进行下载(多个) 4.文件保存的名称UUID生成,不过显示并下载的名称都是原...

    cdi-properties:用于从类路径上的属性文件读取属性的 CDI 项目

    ...}它将直接扫描您的类路径根目录中的所有*.properties文件,并查找带有 key: keyValue的属性。所需的依赖您可以使用required属性(默认为true )指定必须定义该属性以满足依赖关系: @Inject@Property(value="key...

    java解析给定url

    System.out.println("读取配置文件/config.properties出错"); } } /** * 程序总入口 */ private void start() { for(int i = 0; i (); i++) { URLConnection con = getConnection(configList.get(i)); ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。  《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是...

    java 面试题 总结

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    封装给java使用的 web报表 rm webrm 报表1.0.0.1版正式版

    然后修改classes文件下的 db.properties 的连接。 然后把项目放在tomcat下运行既可: 起作用的关键文件:RMVIEWP.CAB 文件,客户端插件 Lib下的两个包:rmview1.0.0.1.jar 使用接口: package common.rmview; /* ...

    利用Java发送邮件(含附件)的例子

    emailsmtp=smtp.qq.comemailaddress=459104018@qq.comemailpass=******2、读取配置文件的类文件(ReadPropertity.java) import java.io.IOException;import java.util.Properties;public class ReadPropertity { ...

    基于Java实现的邮箱管理软件,可实现登陆163邮箱、读取收件箱的邮件信息、发送邮件

    类路径下配置 emailServerConfig.properties # POP 邮件服务器的地址 mailServer_POP3Host = pop.163.com # SMTP 邮件服务器的地址 mailServer_SMTPHost = smtp.163.com # 邮箱地址 myEmailAddress = xxxxxx@163.com...

    android编程(自学资料)

    Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx....

    开源bbs源码java-latke-demo:Latke演示

    作为数据库,数据库文件默认路径为 ~/latke-h2-demo/db,如有需要请在 local.properties 中进行修改。 示例 模板页面渲染 路径:/ 功能:渲染(输出 HTML)一个简单的 FreeMarker 页面模板 代码:HelloProcessor....

Global site tag (gtag.js) - Google Analytics