`

java读取配置文件的几种方法

 
阅读更多

在java web开发中,常常需要在启动服务器的时候就需要读取一些配置文件的信息,以初始化上下文和一些项目用到的配置常量,下面介绍几种读取配置文件的方法:

 

方法一:

 

public class PropUtil {

	public static Properties getProUtil() {
		Properties config = new Properties();
		InputStream is = null;
		try {
			System.out.println(PropUtil.class.getClassLoader().getResource("").toString()
);
			System.out.println(PropUtil.class.getResource("/").toString()
);
			is = PropUtil.class.getClassLoader().getResourceAsStream(
					"quartz.properties
");
			config.load(is);
		} catch (IOException ex) {
			//
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException ex) {
					// ignore
				}
			}
		}
		return config;
	}

	public static void main(String[] args) {
		System.out.println(getProUtil().toString());
	}
}

 输入结果:

file:/D:/all_project/tee_7.6/tee-biz/target/test-classes/
file:/D:/all_project/tee_7.6/tee-biz/target/test-classes/
{org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool, org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore, org.quartz.scheduler.instanceId=one, org.quartz.threadPool.threadPriority=4, org.quartz.scheduler.instanceName=myScheduler, org.quartz.threadPool.threadCount=30}

    注意: 在工程项目中,PropUtil源文件所在的路径和编译后的字节码所在的路径不是在一个地方,具体是在pom.xml中配置的,根据输出结果,PropUtil生成的class文件在D:\all_project\tee_7.6\tee-biz\target\test-classes\com\taobao\tee\readResouceFiles目录下,它能读取的资源文件必须放在 D:/all_project/tee_7.6/tee-biz/target/test-classes/   目录下,所以只有把quartz.properties放在这个目录下才能读取到这个资源文件。

    另外,其中最好的写法是:InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("quartz.properties");

 

方法二:通过文件操作的方式

public class PropUtil {

	 public static Properties getProUtil() {
	 Properties config = new Properties();
	 InputStream is = null;
	 try {
		File file =new File("D:\\all_project\\riskm9.19\\riskm-web\\src\\main\\resources\\quartz.properties");
	    is=new FileInputStream(file);
	   config.load(is);
	 } catch (IOException ex) {
	 //
	 } finally {
	 if (is != null) {
	 try {
	 is.close();
	 } catch (IOException ex) {
	 // ignore
	 }
	 }
	 }
	 return config;
	 }

	public static void main(String[] args) {
		System.out.println(getProUtil().toString());
	}
}
 

方法三:通过资源捆绑的形式:ResourceBundle 。

 

方法四:其实跟之前差不多:

    public void initialize() throws SchedulerException {
        // short-circuit if already initialized
        if (cfg != null) {
            return;
        }
        if (initException != null) {
            throw initException;
        }

        String requestedFile = System.getProperty(PROPERTIES_FILE);
        String propFileName = requestedFile != null ? requestedFile
                : "quartz.properties";
        File propFile = new File(propFileName);

        Properties props = new Properties();

        InputStream in = null;

        try {
            if (propFile.exists()) {
                try {
                    if (requestedFile != null) {
                        propSrc = "specified file: '" + requestedFile + "'";
                    } else {
                        propSrc = "default file in current working dir: 'quartz.properties'";
                    }

                    in = new BufferedInputStream(new FileInputStream(propFileName));
                    props.load(in);

                } catch (IOException ioe) {
                    initException = new SchedulerException("Properties file: '"
                            + propFileName + "' could not be read.", ioe);
                    throw initException;
                }
            } else if (requestedFile != null) {
                in =
                    Thread.currentThread().getContextClassLoader().getResourceAsStream(requestedFile);

                if(in == null) {
                    initException = new SchedulerException("Properties file: '"
                        + requestedFile + "' could not be found.");
                    throw initException;
                }

                propSrc = "specified file: '" + requestedFile + "' in the class resource path.";

                in = new BufferedInputStream(in);
                try {
                    props.load(in);
                } catch (IOException ioe) {
                    initException = new SchedulerException("Properties file: '"
                            + requestedFile + "' could not be read.", ioe);
                    throw initException;
                }

            } else {
                propSrc = "default resource file in Quartz package: 'quartz.properties'";

                ClassLoader cl = getClass().getClassLoader();
                if(cl == null)
                    cl = findClassloader();
                if(cl == null)
                    throw new SchedulerConfigException("Unable to find a class loader on the current thread or class.");

                in = cl.getResourceAsStream(
                        "quartz.properties");

                if (in == null) {
                    in = cl.getResourceAsStream(
                            "/quartz.properties");
                }
                if (in == null) {
                    in = cl.getResourceAsStream(
                            "org/quartz/quartz.properties");
                }
                if (in == null) {
                    initException = new SchedulerException(
                            "Default quartz.properties not found in class path");
                    throw initException;
                }
                try {
                    props.load(in);
                } catch (IOException ioe) {
                    initException = new SchedulerException(
                            "Resource properties file: 'org/quartz/quartz.properties' "
                                    + "could not be read from the classpath.", ioe);
                    throw initException;
                }
            }
        } finally {
            if(in != null) {
                try { in.close(); } catch(IOException ignore) { /* ignore */ }
            }
        }

  
    }
 

 

 

 

分享到:
评论

相关推荐

    java读取配置文件

    在Java中,我们可以使用多种方法来读取配置文件,下面将详细介绍几种常见的方法。 1. **使用`java.io`流读取** 最基础的方式是使用Java的I/O流来读取文本配置文件(通常是.properties格式)。例如,`java.io....

    java读取.properties配置文件的几种方法

    下面将详细介绍几种在Java中读取`.properties`配置文件的方法。 1. 使用`java.util.Properties`类 `Properties`类是Java提供的一种内置机制,用于处理属性列表。它继承了`Hashtable`类,提供了加载和保存属性列表...

    java类读取配置文件信息

    在Java类中,读取配置文件信息可以使用多种方法,其中一种方法是使用`this.getClass().getClassLoader().getResourceAsStream`方法。 `this.getClass().getClassLoader().getResourceAsStream`方法是Java类中的一种...

    使用Java读取XML配置文件

    使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...

    Java 加载配置文件的方式

    本篇文章将详细探讨Java中加载配置文件的几种常见方式。 1. **使用Properties类** Java标准库中的`java.util.Properties`类是处理.properties文件的主要工具。我们可以使用`Properties.load()`方法从InputStream中...

    Java读取Properties文件几种方法总结

    Java读取Properties文件几种方法总结 Java读取Properties文件是Java开发中常见的操作,Properties文件是一种常用的配置文件格式,可以存储各种配置信息。Java提供了多种方法来读取Properties文件,本文将总结六种...

    java 读取properties文件代码

    在Java编程中,Properties文件是一种常用的配置文件格式,用于存储应用程序的配置参数或者环境设置。这些文件通常以键值对的形式存在,例如`key=value`。读取Properties文件是Java开发中的常见操作,特别是在需要...

    加载properties配置文件的几种方法

    本文将深入探讨在SSM框架下加载properties配置文件的几种常见方法。 1. **使用Spring的PropertyPlaceholderConfigurer** Spring提供了`PropertyPlaceholderConfigurer`类,可以方便地从.properties文件中读取属性...

    Java中spring读取配置文件的几种方法示例

    本文将详细讲解如何在Spring中读取配置文件。 首先,Spring配置文件通常以XML格式存在,例如`bean_config.xml`。这些文件定义了Bean的结构和它们之间的依赖关系。一个简单的配置文件示例如下: ```xml <!DOCTYPE ...

    java中的@Value获取不到配置文件的值,也加载不到默认值

    问题 自己开发一个工具类,为第三方应用提供调用接口,但是打包后测试过程...从配置上,完全没有写错的可能,见上方的配置,所以只能从不能获取配置文件内容的几种可能着手了! 变量被static关键字所修饰 我们所需要获

    JAVA读写文件小实例

    本实例将深入探讨如何使用Java进行文件的读取和写入操作,这对于处理数据存储、日志记录、配置文件管理等任务至关重要。首先,我们需要理解Java中的几个关键类,如`java.io.File`、`java.io.FileReader`、`java.io....

    java读取excel文件jar包20181223

    Java读取Excel文件是开发过程中常见的任务,尤其是在处理数据导入导出、数据分析或者报表生成时。这个名为"java读取excel文件jar包20181223"的资源可能包含了一些帮助Java开发者实现这一功能的库。下面将详细讨论...

    配置文件节点读写

    配置文件的读写通常涉及到以下几个步骤: 1. **打开文件**:使用编程语言提供的API打开配置文件,例如在Python中可以使用`open()`函数,Java中则是`FileInputStream`或`FileReader`。 2. **读取内容**:读取文件...

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

    在Java编程中,Properties文件是用于存储配置信息的关键组件,如数据库连接字符串、应用程序设置等。在处理Properties文件时,可能会...通过学习和实践这些解决方案,你将在Java应用开发中更有效地管理和更新配置文件。

    java动态配置,支持配置文件进行不同类的实现功能

    这主要通过读取外部配置文件来实现,使得应用程序更具灵活性和可扩展性。Spring框架是Java领域中动态配置的典型代表,它提供了一种强大的方式来管理对象及其依赖关系,从而实现灵活的配置。 在Java中,动态配置通常...

    JAVA读取属性文件的几种方法总结

    以下是对几种在Java中读取属性文件的方法的详细介绍: 1. **使用`java.util.Properties`类的`load()`方法** 这是最基础的读取属性文件的方法。首先创建一个`FileInputStream`对象来打开文件,然后创建一个`...

    自动读取mysql数据库字段并自动生成java属性和set和get方法

    在压缩包子文件的文件名称列表中,"FieldToRead--属性读写"可能表示的是一个实现此功能的具体文件,或者是一个示例,用于展示如何读取数据库字段并生成Java属性的读写方法。该文件可能是代码示例、配置文件或者是...

    一次代码重构之旅-快速读写xml文件工具类封装

    XML(eXtensible Markup Language)是一种结构化数据格式,广泛应用于配置文件、数据传输和数据存储等领域。 在描述中提到的博客文章“一次代码重构之旅-快速读写xml文件工具类封装”,作者分享了如何通过Java进行...

    java文件路径获取

    在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好地理解和掌握这些技巧。 #### 二、基本概念 在...

Global site tag (gtag.js) - Google Analytics