`
yianpuodiaotu
  • 浏览: 241537 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

读取properties文件

阅读更多

武晨伟的博客
http://blog.csdn.net/bobor_2008/archive/2008/11/05/3225918.aspx

上看了一段代码还不错,稍加修改,粘贴如下,备用。

package com.test;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Properties;

/**
 * Util class that will read properties from the WEB-INF/classes/directory or by
 * specifying a URL on the filesystem. Also has a helper method for creating a
 * platform independent URL.
 */
public class PropertyReader {

	/**
	 * Retrieve the properties specified by the fileName The property file
	 * should be in the WEB-INF/classess directory Suppose you need to get the
	 * properties in the web-inf/classes/config/application.properties , you
	 * need to pass the propertyFile: config/application.properties
	 * 
	 * @param propertyFile
	 *            relative path to a properties file in the WEB-INF/classes
	 *            directory
	 * @return a <code>Properties<code> object based on the input file
	 **/
	public static Properties getProperties(String propertyFile) {
		try {
			URL url = getPropertiesURL(propertyFile);
			return getProperties(url);
		} catch (Exception e) {
			System.out.println("Error ocurred during properties retrieval");
			System.out.println(e.getMessage());
			return null;
		}
	}

	/**
	 * This method will return a platform independent URL to a file in the
	 * web-inf/classes direcotry.
	 * 
	 * @param fileName
	 *            relative path to a properties file in the WEB-INF/classes
	 *            directory
	 * @return a platform independent URL to the xml file.
	 */
	public static URL getPropertiesURL(String fileName) {
		try {
			System.out.println("Getting the properties URL");
			URL url = null;
			url = PropertyReader.class.getResource("/" + fileName);
			String s = url.toString();
			System.out.println("Filename of the  properties file is: " + s);
			if (s.indexOf("file://") != -1) {
				int indexOf = s.indexOf("file://") + 6;
				String temp = s.substring(0, indexOf);
				System.out.println("temp = " + temp + " moet zijn file:/");
				url = new URL(temp + "//" + s.substring(indexOf));
				System.out.println("The url is now: " + url);
			}
			return url;
		} catch (Exception e) {
			System.out.println("Error ocurred during properties retrieval");
			System.out.println(e.getMessage());
			return null;
		}
	}

	/**
	 * This method will return a platform independent URL to a file in the
	 * web-inf/classes/"packgageName" direcotry.
	 * 
	 * @param fileName
	 *            relative path to a properties file in the
	 *            web-inf/classes/"packgageName" directory
	 * @return a platform independent URL to the xml file.
	 */
	public static URL getPropertiesPackagedURL(String fileName) {
		try {
			System.out.println("Getting the properties URL");
			URL url = null;
			url = PropertyReader.class.getResource(fileName);
			String s = url.toString();
			System.out.println("Filename of the  properties file is: " + s);
			if (s.indexOf("file://") != -1) {
				int indexOf = s.indexOf("file://") + 6;
				String temp = s.substring(0, indexOf);
				System.out.println("temp = " + temp + " moet zijn file:/");
				url = new URL(temp + "//" + s.substring(indexOf));
				System.out.println("The url is now: " + url);
			}
			return url;
		} catch (Exception e) {
			System.out.println("Error ocurred during properties retrieval");
			System.out.println(e.getMessage());
			return null;
		}
	}

	/**
	 * Retrieve the properties accesible through the specified URL
	 * 
	 * @param url
	 *            a reference to a properties file
	 * @return a properties file
	 **/
	public static Properties getProperties(URL url) {
		try {
			Properties props = new Properties();
			// Check for Solaris compatibility.
			// A // in the file protocol won't be found in Solaris.
			props.load(url.openStream());
			System.out.println("Properties have been loaded: " + props);
			return props;
		} catch (Exception e) {
			System.out.println("Error ocurred during properties retrieval");
			System.out.println(e.getMessage());
			return null;
		}
	}

	public static void main(String[] args) {
		// 文件位于src下
		PropertyReader.getProperties("abc.properties");

		// 文件位于src/packageurl下
		URL url = PropertyReader.getPropertiesPackagedURL("abc.properties");
		PropertyReader.getProperties(url);

		// 文件位于项目根目录下
		File file = new File("abc.properties");
		try {
			PropertyReader.getProperties(file.toURL());
		} catch (MalformedURLException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
	}
}
package com.test;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
import java.util.Properties;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;


public class PropertyFileReadTest {
	public static void main(String[] args) {
		TestReadPropertiesFile1();
		TestReadPropertiesFile2();
		TestReadPropertiesFile3();
		TestReadPropertiesFile4();
		TestReadPropertiesFile5();
	}
	/**
	 * 使用java.util.Properties类的load()方法
	 */
	public static Properties readPropertiesFile1(String fileName) throws IOException {
		InputStream in;
		in = new BufferedInputStream(new FileInputStream(fileName));
		Properties p = new Properties();
		p.load(in);
		return p;
	}
	public static void TestReadPropertiesFile1(){
		String filename="quartz.properties";
		try {
			readPropertiesFile1(filename);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (Exception e) {
		}
	}
	
	/**
	 * 使用java.util.ResourceBundle类的getBundle()方法
	 * 注意:该方法需要将该文件添到构建路径中
	 */
	public static ResourceBundle readPropertiesFile2(String fileName) {
		ResourceBundle rb=ResourceBundle.getBundle(fileName,Locale.getDefault());
		
		return rb;
	}
	public static void TestReadPropertiesFile2() {
		String filename = "quartz";
		ResourceBundle rb = readPropertiesFile2(filename);
		System.out.println(rb.getString("org.quartz.scheduler.instanceId"));
	}
	
	/**
	 * 使用java.util.PropertyResourceBundle类的构造函数:
	 */
	public static ResourceBundle readPropertiesFile3(String fileName)throws IOException {
		InputStream in = new BufferedInputStream(new FileInputStream(fileName));
		ResourceBundle rb = new PropertyResourceBundle(in);
		return rb;
	}
	public static void TestReadPropertiesFile3() {
		String filename = "quartz.properties";
		try {
			ResourceBundle rb;
			rb = readPropertiesFile3(filename);
			System.out.println(rb.getString("org.quartz.scheduler.instanceId"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 使用class变量的getResourceAsStream()方法
	 */
	public static Properties readPropertiesFile4(String fileName)throws IOException {
		InputStream in= PropertyFileReadTest.class.getResourceAsStream(fileName);
		Properties p=new Properties();
		p.load(in);
		return p;
	}
	public static void TestReadPropertiesFile4() {
		String filename="quartz.properties";
		try {
			Properties pro = readPropertiesFile4(filename);
			System.out.println(pro);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (Exception e) {
		}
	}
	/**
	 * 使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
	 * @throws IOException 
	 */
	public static Properties readPropertiesFile5(String fileName) throws IOException {
		InputStream in=ClassLoader.getSystemResourceAsStream(fileName);
		Properties p=new Properties();
		p.load(in);
		return p;
	}
	public static void TestReadPropertiesFile5() {
		String filename="quartz.properties";
		try {
			Properties pro = readPropertiesFile5(filename);
			System.out.println(pro);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (Exception e) {
		}
	}
}

文件操作:将文件按照一行一行读取,读取为list

 

/**
 * 将文件按“行”读取为list
 * @author apple
 */
public class PropertyFileReadTest {
	public static void main(String[] args) {
		String filename = "quartz.properties";
		try {
			List list = readFileToArrayList(filename);
			for (Iterator iter = list.iterator(); iter.hasNext();) {
				System.out.println(iter.next());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 将文件按“行”读取为list
	 * @param filename
	 * @return list
	 * @throws IOException
	 */
	public static List readFileToArrayList(String filename) throws IOException {
		List list = new ArrayList();
		FileInputStream fin = new FileInputStream(filename);
		InputStreamReader read = new InputStreamReader(fin, "UTF-8");// 编码处理
		BufferedReader br = new BufferedReader(read);
		String line = br.readLine();// 从文件读取一行字符串
		while (line != null) {
			list.add(line);
			line = br.readLine();// 从文件中继续读取一行数据
		}
		br.close();// 关闭BufferedReader对象
		read.close();// 关闭文件
		fin.close();
		return list;
	}
}

1。使用java.util.Properties类的load()方法
示例:
InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);

2。使用java.util.ResourceBundle类的getBundle()方法
示例:
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());

3。使用java.util.PropertyResourceBundle类的构造函数
示例:
InputStream in = new BufferedInputStream(new FileInputStream(name));
ResourceBundle rb = new PropertyResourceBundle(in);

4。使用class变量的getResourceAsStream()方法
示例:
InputStream in = JProperties.class.getResourceAsStream(name);
Properties p = new Properties();
p.load(in);

5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
示例:
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);

6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
示例:
InputStream in = ClassLoader.getSystemResourceAsStream(name);
Properties p = new Properties();
p.load(in);

补充

Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:
InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);

分享到:
评论

相关推荐

    java 读取properties文件代码

    读取Properties文件是Java开发中的常见操作,特别是在需要根据配置文件动态改变程序行为的时候。下面我们将详细探讨如何在Java中读取Properties文件。 首先,你需要确保你的项目中包含了一个Properties文件,比如`...

    js读取properties文件

    在JavaScript(JS)环境中,读取.properties文件通常用于处理配置数据或者本地化文本。这些文件在Java开发中广泛使用,但JavaScript同样可以借助一些库或技术来读取它们。下面我们将详细探讨如何在JavaScript中实现...

    Python实现读取Properties配置文件的方法

    本篇文章将详细探讨如何通过Python来读取并解析`.properties`配置文件。 首先,了解`.properties`文件的格式。这种文件通常用于存储配置信息,其中键值对以等号`=`分隔,每一行代表一个键值对,注释以`#`或`!`开始...

    读取properties文件返回map

    1. **properties文件结构** `properties`文件的结构非常简单,每行代表一个键值对,键和值之间用等号`=`或冒号`:`分隔。例如: ``` username=admin password=123456 database.url=jdbc:mysql://localhost:3306/...

    使用J2SE API读取Properties文件的六种方法

    本文将详细讲解使用J2SE API来读取Properties文件的六种方法。 1. **使用java.util.Properties类的load()方法** 这是最基本的方法,通过`FileInputStream`打开文件,然后使用`Properties`类的`load()`方法加载内容...

    android中读取properties文件

    在Android开发中,读取`properties`文件是一个常见的任务,主要用于存储配置信息或者与Java中的`.properties`文件进行交互。`.properties`文件是一种简单的键值对格式,常用于跨平台的配置存储。以下是对这个主题的...

    Java读取properties文件的三种方式

    在Java编程中,读取properties文件是常见的任务,主要用于配置应用程序的参数或环境变量。properties文件通常以键值对的形式存储数据,便于管理和修改。本文将详细介绍三种在Java中读取properties文件的方法。 1. ...

    Java源码读写Properties文件.rar

    这个压缩包“Java源码读写Properties文件.rar”包含了一份关于如何使用Java来读取和写入Properties文件的源代码示例。下面我们将详细探讨这个主题。 首先,Properties类是Java的标准库类,位于`java.util`包下,它...

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

    在处理Properties文件时,可能会遇到几个常见的问题,包括找不到指定路径、读取正常但文件数据未更新的情况。以下是对这些问题的详细解答。 首先,让我们解决“系统找不到指定路径”的问题。在Java中,加载...

    Java读取Properties文件的六种方法

    ### Java读取Properties文件的六种方法 在Java开发中,`Properties` 文件常用于存储配置信息,如数据库连接字符串、应用配置等。正确且高效地读取这些配置文件对于程序运行至关重要。本文将详细介绍六种不同的方法...

    SSM 读取properties文件

    "SSM 读取properties文件"这个话题聚焦于如何在项目中有效地读取和使用这些配置文件。properties文件通常用于存储应用程序的配置参数,如数据库连接信息、服务器端口、邮件服务设置等,使得这些关键信息能够独立于...

    properties文件读写

    properties文件读写操作

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

    总结一下,处理Java中的Properties文件读写时,需要注意文件路径的准确性、文件的读写权限以及缓存问题。通过以上方法,应该能够有效解决描述中提到的问题。对于提供的"新建文本文档.txt",虽然不是Properties文件,...

    读取properties文件工具类

    这个"读取properties文件工具类"是为了简化程序中对`.properties`文件的读取操作而设计的。通过这样的工具类,开发者可以方便地加载和获取配置文件中的属性值,避免重复编写相同的代码。下面我们将详细探讨`...

    怎样读取properties文件内容

    ### 如何使用Java读取properties文件内容 在Java开发中,`properties`文件是一种非常常见的配置文件格式,它主要用于存储程序的各种配置信息。通过这种方式,可以实现程序与配置的分离,便于维护和调整。本文将详细...

    读取properties文件内容

    ConfigFile configfile = ConfigFile.getInstance("ipConfig123.properties"); String ip = configfile.getkeyvalue("ip"); 可以取出ipConfig123.properties 文件中IP的内容

    c#操作properties,读写配置文件

    ### C#操作Properties,读写配置文件 在C#编程中,经常需要处理应用程序的配置信息,例如数据库连接字符串、用户界面的语言设置等。这些配置信息通常存储在配置文件中,便于程序运行时动态加载和修改。C#提供了一种...

    properties文件的读取

    3. **读取properties文件内容** 一旦文件加载成功,可以使用`getProperty()`方法获取特定键的值: ```java String username = prop.getProperty("username"); String password = prop.getProperty("password"); ...

    读取Properties文件的六种方法

    ### 读取Properties文件的六种方法 在Java开发中,`Properties`文件是一种非常常见的配置文件格式,它主要用于存储程序的各种配置信息。通过不同方式读取这些配置信息,可以提高程序的灵活性与可维护性。本文将详细...

Global site tag (gtag.js) - Google Analytics