`
5aijava
  • 浏览: 417561 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • J2SE
阅读更多
java 代码
  1. 1。使用java.util.Properties类的load()方法    
  2. 示例:    
  3. InputStream in = new BufferedInputStream(new FileInputStream(name));    
  4. Properties p = new Properties();    
  5. p.load(in);    
  6.   
  7. 2。使用java.util.ResourceBundle类的getBundle()方法    
  8. 示例:   
  9. ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());    
  10.   
  11. 3。使用java.util.PropertyResourceBundle类的构造函数    
  12. 示例:    
  13. InputStream in = new BufferedInputStream(new FileInputStream(name));    
  14. ResourceBundle rb = new PropertyResourceBundle(in);    
  15.   
  16. 4。使用class变量的getResourceAsStream()方法    
  17. 示例:    
  18. InputStream in = JProperties.class.getResourceAsStream(name);    
  19. Properties p = new Properties();    
  20. p.load(in);    
  21.   
  22. 5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法    
  23. 示例:    
  24. InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);    
  25. Properties p = new Properties();    
  26. p.load(in);    
  27.   
  28. 6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法    
  29. 示例:    
  30. InputStream in = ClassLoader.getSystemResourceAsStream(name);    
  31. Properties p = new Properties();    
  32. p.load(in);    
  33.   
  34. 补充    
  35.   
  36. Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法    
  37. 示例:   
  38. InputStream in = context.getResourceAsStream(path);    
  39. Properties p = new Properties();    
  40. p.load(in);    
  41.   
  42. 完整的示例,可以参考附件文件    
  43. 如何上传文件,谁知道请告诉以下。 只好把source都贴上来了    
  44. JProperties.java文件    
  45.   
  46. /**   
  47. ** This program is free software.   
  48. **   
  49. ** You may redistribute it and/or modify it under the terms of the GNU   
  50. ** General Public License as published by the Free Software Foundation.   
  51. ** Version 2 of the license should be included with this distribution in   
  52. ** the file LICENSE, as well as License.html. If the license is not   
  53. ** included with this distribution, you may find a copy at the FSF web   
  54. ** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the   
  55. ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.   
  56. **   
  57. ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,   
  58. ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR   
  59. ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY   
  60. ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR   
  61. ** REDISTRIBUTION OF THIS SOFTWARE.   
  62. **/    
  63.   
  64. package com.kindani;    
  65.   
  66. //import javax.servlet.ServletContext;    
  67. import java.util.*;    
  68. import java.io.InputStream;    
  69. import java.io.IOException;    
  70. import java.io.BufferedInputStream;    
  71. import java.io.FileInputStream;    
  72.   
  73. /**   
  74. * 使用J2SE API?取Properties文件的六?方法   
  75. * User: SYNFORM   
  76. * Date: 2005/07/12   
  77. * Time: 18:40:55   
  78. * To change this template use File | Settings | File Templates.   
  79. */    
  80. public class JProperties {    
  81.   
  82. public final static int BY_PROPERTIES = 1;    
  83. public final static int BY_RESOURCEBUNDLE = 2;    
  84. public final static int BY_PROPERTYRESOURCEBUNDLE = 3;    
  85. public final static int BY_CLASS = 4;    
  86. public final static int BY_CLASSLOADER = 5;    
  87. public final static int BY_SYSTEM_CLASSLOADER = 6;    
  88.   
  89. public final static Properties loadProperties(final String name, final int type) throws IOException {    
  90. Properties p = new Properties();    
  91. InputStream in = null;    
  92. if (type == BY_PROPERTIES) {    
  93. in = new BufferedInputStream(new FileInputStream(name));    
  94. assert (in != null);    
  95. p.load(in);    
  96. else if (type == BY_RESOURCEBUNDLE) {    
  97. ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());    
  98. assert (rb != null);    
  99. p = new ResourceBundleAdapter(rb);    
  100. else if (type == BY_PROPERTYRESOURCEBUNDLE) {    
  101. in = new BufferedInputStream(new FileInputStream(name));    
  102. assert (in != null);    
  103. ResourceBundle rb = new PropertyResourceBundle(in);    
  104. p = new ResourceBundleAdapter(rb);    
  105. else if (type == BY_CLASS) {    
  106. assert (JProperties.class.equals(new JProperties().getClass()));    
  107. in = JProperties.class.getResourceAsStream(name);    
  108. assert (in != null);    
  109. p.load(in);    
  110. // return new JProperties().getClass().getResourceAsStream(name);    
  111. else if (type == BY_CLASSLOADER) {    
  112. assert (JProperties.class.getClassLoader().equals(new JProperties().getClass().getClassLoader()));    
  113. in = JProperties.class.getClassLoader().getResourceAsStream(name);    
  114. assert (in != null);    
  115. p.load(in);    
  116. // return new JProperties().getClass().getClassLoader().getResourceAsStream(name);    
  117. else if (type == BY_SYSTEM_CLASSLOADER) {    
  118. in = ClassLoader.getSystemResourceAsStream(name);    
  119. assert (in != null);    
  120. p.load(in);    
  121. }    
  122.   
  123. if (in != null) {    
  124. in.close();    
  125. }    
  126. return p;    
  127.   
  128. }    
  129.   
  130. // ---------------------------------------------- servlet used    
  131. /*   
  132. public static Properties loadProperties(ServletContext context, String path) throws IOException {   
  133. assert (context != null);   
  134. InputStream in = context.getResourceAsStream(path);   
  135. assert (in != null);   
  136. Properties p = new Properties();   
  137. p.load(in);   
  138. in.close();   
  139. return p;   
  140.  
  141. */    
  142. // ---------------------------------------------- support class    
  143.   
  144. /**   
  145. * ResourceBundle Adapter class.   
  146. */    
  147. public static class ResourceBundleAdapter extends Properties {    
  148. public ResourceBundleAdapter(ResourceBundle rb) {    
  149. assert (rb instanceof java.util.PropertyResourceBundle);    
  150. this.rb = rb;    
  151. java.util.Enumeration e = rb.getKeys();    
  152. while (e.hasMoreElements()) {    
  153. Object o = e.nextElement();    
  154. this.put(o, rb.getObject((String) o));    
  155. }    
  156. }    
  157.   
  158. private ResourceBundle rb = null;    
  159.   
  160. public ResourceBundle getBundle(String baseName) {    
  161. return ResourceBundle.getBundle(baseName);    
  162. }    
  163.   
  164. public ResourceBundle getBundle(String baseName, Locale locale) {    
  165. return ResourceBundle.getBundle(baseName, locale);    
  166. }    
  167.   
  168. public ResourceBundle getBundle(String baseName, Locale locale, ClassLoader loader) {    
  169. return ResourceBundle.getBundle(baseName, locale, loader);    
  170. }    
  171.   
  172. public Enumeration getKeys() {    
  173. return rb.getKeys();    
  174. }    
  175.   
  176. public Locale getLocale() {    
  177. return rb.getLocale();    
  178. }    
  179.   
  180. public Object getObject(String key) {    
  181. return rb.getObject(key);    
  182. }    
  183.   
  184. public String getString(String key) {    
  185. return rb.getString(key);    
  186. }    
  187.   
  188. public String[] getStringArray(String key) {    
  189. return rb.getStringArray(key);    
  190. }    
  191.   
  192. protected Object handleGetObject(String key) {    
  193. return ((PropertyResourceBundle) rb).handleGetObject(key);    
  194. }    
  195.   
  196. }    
  197.   
  198. }    
  199.   
  200.   
  201. JPropertiesTest.java文件    
  202.   
  203. /**   
  204. ** This program is free software.   
  205. **   
  206. ** You may redistribute it and/or modify it under the terms of the GNU   
  207. ** General Public License as published by the Free Software Foundation.   
  208. ** Version 2 of the license should be included with this distribution in   
  209. ** the file LICENSE, as well as License.html. If the license is not   
  210. ** included with this distribution, you may find a copy at the FSF web   
  211. ** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the   
  212. ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.   
  213. **   
  214. ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,   
  215. ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR   
  216. ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY   
  217. ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR   
  218. ** REDISTRIBUTION OF THIS SOFTWARE.   
  219. **/    
  220. package com.kindani.test;    
  221.   
  222. import junit.framework.*;    
  223. import com.kindani.JProperties;    
  224.   
  225. //import javax.servlet.ServletContext;    
  226. import java.util.Properties;    
  227.   
  228. public class JPropertiesTest extends TestCase {    
  229. JProperties jProperties;    
  230. String key = "helloworld.title";    
  231. String value = "Hello World!";    
  232.   
  233. public void testLoadProperties() throws Exception {    
  234. String name = null;    
  235. Properties p = new Properties();    
  236.   
  237. name = "C:\\IDEAP\\Properties4Methods\\src\\com\\kindani\\test\\LocalStrings.properties";    
  238. p = JProperties.loadProperties(name, JProperties.BY_PROPERTIES);    
  239. assertEquals(value, p.getProperty(key));    
  240.   
  241. name = "com.kindani.test.LocalStrings";    
  242. p = JProperties.loadProperties(name,JProperties.BY_RESOURCEBUNDLE);    
  243. assertEquals(value, p.getProperty(key));    
  244. assertEquals(value,((JProperties.ResourceBundleAdapter)p).getString(key));    
  245.   
  246. name = "C:\\IDEAP\\Properties4Methods\\src\\com\\kindani\\test\\LocalStrings.properties";    
  247. p = JProperties.loadProperties(name, JProperties.BY_PROPERTYRESOURCEBUNDLE);    
  248. assertEquals(value, p.getProperty(key));    
  249. assertEquals(value,((JProperties.ResourceBundleAdapter)p).getString(key));    
  250.   
  251. name = "\\com\\kindani\\test\\LocalStrings.properties";    
  252. p = JProperties.loadProperties(name, JProperties.BY_SYSTEM_CLASSLOADER);    
  253. assertEquals(value, p.getProperty(key));    
  254.   
  255. name = "\\com\\kindani\\test\\LocalStrings.properties";    
  256. p = JProperties.loadProperties(name, JProperties.BY_CLASSLOADER);    
  257. assertEquals(value, p.getProperty(key));    
  258.   
  259. name = "test\\LocalStrings.properties";    
  260. p = JProperties.loadProperties(name, JProperties.BY_CLASS);    
  261. assertEquals(value, p.getProperty(key));    
  262. }    
  263.   
  264. /*   
  265. public void testLoadProperties2() throws Exception {   
  266. ServletContext context = null;   
  267. String path = null;   
  268. Properties p = null;   
  269. path = "/WEB-INF/classes/LocalStrings.properties";   
  270. p = JProperties.loadProperties(context, path);   
  271. assertEquals(value, p.getProperty(key));   
  272.  
  273. */    
  274. }    
  275.   
  276. properties文件与JPropertiesTest.java文件相同的目录下    
  277. LocalStrings.properties文件    
  278. # $Id: LocalStrings.properties,v 1.1 2000/08/17 00:57:52 horwat Exp $    
  279.   
  280. # Default localized resources for example servlets    
  281. # This locale is en_US    
  282.   
  283. helloworld.title=Hello World!    
  284.   
  285. requestinfo.title=Request Information Example    
  286. requestinfo.label.method=Method:    
  287. requestinfo.label.requesturi=Request URI:    
  288. requestinfo.label.protocol=Protocol:    
  289. requestinfo.label.pathinfo=Path Info:    
  290. requestinfo.label.remoteaddr=Remote Address:    
  291.   
  292. requestheader.title=Request Header Example    
  293.   
  294. requestparams.title=Request Parameters Example    
  295. requestparams.params-in-req=Parameters in this request:    
  296. requestparams.no-params=No Parameters, Please enter some    
  297. requestparams.firstname=First Name:    
  298. requestparams.lastname=Last Name:    
  299.   
  300. cookies.title=Cookies Example    
  301. cookies.cookies=Your browser is sending the following cookies:    
  302. cookies.no-cookies=Your browser isn't sending any cookies    
  303. cookies.make-cookie=Create a cookie to send to your browser    
  304. cookies.name=Name:    
  305. cookies.value=Value:    
  306. cookies.set=You just sent the following cookie to your browser:    
  307.   
  308. sessions.title=Sessions Example    
  309. sessions.id=Session ID:    
  310. sessions.created=Created:    
  311. sessions.lastaccessed=Last Accessed:    
  312. sessions.data=The following data is in your session:    
  313. sessions.adddata=Add data to your session    
  314. sessions.dataname=Name of Session Attribute:    
  315. sessions.datavalue=Value of Session Attribute:   
分享到:
评论

相关推荐

    J2SE API读取Properties文件六种方法

    ### J2SE API读取Properties文件六种方法 在Java开发过程中,经常需要读取配置文件来获取系统运行时所需的参数或配置信息。`Properties`类是Java标准库中的一个非常重要的工具类,用于处理键值对形式的配置数据。...

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

    以上就是使用J2SE API读取Properties文件的六种方法,每种方法都有其适用的场景,开发者应根据实际需求选择合适的方式。在处理Properties文件时,注意异常处理和资源关闭,确保程序的健壮性和效率。

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

    本文将详细介绍六种使用J2SE API(Java标准版API)来读取Properties文件的方法,帮助开发者更好地理解和操作这类文件。 1. 使用Properties类的load()方法 这是最基础且常用的方法,直接通过InputStream读取...

    API读取Properties文件的六种方法

    本文将详细介绍六种使用J2SE API读取`Properties`文件的方法。 #### 1. 使用 `java.util.Properties` 类的 `load()` 方法 这种方法是最常见的读取`Properties`文件的方式。它涉及到创建一个`InputStream`来读取...

    others

    "使用J2SE API读取Properties文件的六种方法.txt"可能详细列举了从Java标准版库(J2SE)中加载和操作Properties文件的不同方式,包括InputStream、Properties类的方法等。 6. **flashplayer-win.zip**: 这可能是...

    在web和j2se中两个不同环境下 读取配置文件 备忘

    配置文件通常用于存储系统设置、数据库连接信息、第三方服务的API密钥等,这些数据需要在程序运行时被读取。本备忘主要关注在Web环境(如Tomcat、Jetty等)和J2SE(Java Standard Edition)环境中如何读取配置文件,...

    J2SE.programming.SimpleConfig.code.rar_java programming

    开发者可以使用Java的标准API,如`Properties`类来加载和解析.properties文件,或者使用`DOM`、`SAX`或`StAX`解析器来处理.xml文件。然而,这些原生方法可能不够灵活,对于复杂的配置需求,可能需要自定义解决方案,...

    fundamentals of the javamail api

    3. **编写代码**:使用JavaMail API提供的类和方法编写邮件相关的功能。 #### 五、核心类回顾 JavaMail API的核心类主要包括: - **Session**:用于创建邮件会话,包含邮件发送的所有设置。 - **Properties**:...

    网络通讯更自由 谈Java串行端口技术协议.doc

    Java串行端口技术协议是Java编程中用于实现串行通信的一种方法,它允许开发者通过Java程序控制串行端口,实现与各种设备如Modem、PDA、测量仪器等的交互。本文主要关注RS232串行通讯协议,这是最常见的一种串行通信...

    java软件工程师课程详细版.docx

    本课程旨在提供 Java 软件工程师所需的详细知识和技能,涵盖 Java 语言基础、面向对象编程、集合编程、多线程编程、GUI 编程、文件读写、对象序列化、异常处理、网络编程、国际化、J2SE 5.0 新特性、设计模式、反射...

    Quartz调度学习笔记

    在配置文件中,你需要指定 `org.quartz.plugin.jobInitializer.fileName` 属性,其值为 `/quartz_jobs.xml`,这个值指明了 Quartz 读取 Jobs 配置的路径。 `quartz_jobs.xml` 文件则是 Quartz 的任务定义文件,它...

    阿里云-负载均衡服务SDK手册.pdf

    开发者需将解压后的`aliyun-sdk-java-online_standard-20141120.jar`文件添加到项目构建路径中,例如在Eclipse中,通过右键点击工程 -> Properties -> Java Build Path -> Libraries -> Add External JARs进行导入。...

    javamail-1_4.zip

    这个“javamail-1_4.zip”文件包含的是JavaMail 1.4版本的源代码、API文档和其他相关资源,使得开发者能够在J2SE环境中开发与邮件相关的应用,而无需额外安装。J2EE平台虽然自身集成了邮件服务支持,但对于J2SE环境...

    java初学者的比较好的学习路线(转)

    - **文件读写**:掌握Properties类的使用方法,实现属性文件的读写操作。 ##### 实践项目 - **操作系统模拟**:设计一个简单的操作系统模型,实现进程调度、内存管理等功能。 - **飞机大战游戏**:开发一款简单的...

    2022年Java串行端口技术协议Java教程.docx

    Java串行端口技术协议是Java编程中用于实现串行通信的一种方法,广泛应用于设备间的交互,如PC、PDA、手机、USB设备等。本文将深入探讨2022年的Java串行通信协议,特别是基于RS232标准。 **串行通信概述** 串行通信...

    java软件工程师课程详细版.pdf

    - **文件读写**:涉及流的使用、二进制流、文本字符流等,通过实践编写文本编辑器加深理解。 7. **对象序列化**: - **序列化与反序列化**:了解如何将对象转换为字节流以便持久化存储或网络传输。 8. **异常...

    Java源码--自编的电话本

    8. **文件操作**:项目可能包含读取和保存配置文件的代码,比如数据库连接信息,这些信息可能以XML或properties文件的形式存储。 9. **设计模式**:在编写源码时,开发者可能应用了一些常见的设计模式,如单例模式...

    zxing sdk for 二维码

    1. **JavaSE**:对于桌面应用开发者,ZXing提供了Java标准版(JavaSE)的API,可以让你在Java应用中轻松地添加二维码的读取和生成。这包括`com.google.zxing.client.j2se`包下的类,如`CommandLineEncoder`和`...

    Java学习教程

    - **Properties类**:用于读写配置文件。 - **设计模式**:如工厂模式(Factory)、单例模式(Singleton)、策略模式(Strategy)、观察者模式(Observer)等,这些模式帮助开发者解决常见的软件设计问题。 ##### 4. 调试与...

Global site tag (gtag.js) - Google Analytics