·您的位置: 首页 » 资源教程 » 编程开发 » JAVA、JSP » 存储.PROPERTIES文件的一个问题

存储.PROPERTIES文件的一个问题

类别: JSP教程  评论数:0 总得分:0
近日写一个小工具,其中要用的一写配置信息,我存放在config.properties文件中。属性文件示例如下:

// config.properties
setting1=value1
other=other value

并写一个界面设置属性,保存。保存的操作如下:
private void saveProperties() throws SystemException{ Properties prop = new Properties(); FileOutputStream fos; FileInputStream fis; try { fis = new FileInputStream(new File("." + File.separator + "config.properties")); fos = new FileOutputStream(new File("." + File.separator + "config.properties")); } catch (FileNotFoundException ex) { ex.printStackTrace(); throw new SystemException("File config.properties NOT found!"); } try { prop.load(fis); } catch (IOException ex1) { ex1.printStackTrace(); throw new SystemException("Error while read from config.properties!"); } log.debug("other is:" + prop.getProperty("other")); //返回null prop.setProperty("setting1", "value2"); //log.debug("other is:" + prop.getProperty("other")); //save the properties try { prop.store(fos, null); } catch (IOException e) { e.printStackTrace(); throw new SystemException("Error when save the config.properties."); } }


上面代码中,首先读入config.properties文件,并装载到Properties对象中。然后,设置setting1的值为value2,然后调用Properties.store()方法保存修改。然而,在使用过程中,发现在保存后的config.properties文件中,other原来的设置总是被抹掉。config.properties文件变为:

//config.properties
setting1=value2

后将代码中从config.properties中获取输出流放置到Properties的load方法之后,发现运行正常。估计原因可能是在load属性之前,构造了新的输出流,并且输出流的文件和输入流文件同名,造成load属性时,此时的输入流的指向已经不是实际的原来的config.properties文件,而变成了内存中由输出流产生的空的config.properties了。其中的运行机理还是不甚明朗,请对IO熟悉的朋友回贴赐教。

修改后的代码如下:
private void saveProperties() throws SystemException{ Properties prop = new Properties(); FileOutputStream fos; FileInputStream fis; try { fis = new FileInputStream(new File("." + File.separator + "config.properties")); } catch (FileNotFoundException ex) { ex.printStackTrace(); throw new SystemException("File config.properties NOT found!"); } try { prop.load(fis); } catch (IOException ex1) { ex1.printStackTrace(); throw new SystemException("Error while read from config.properties!"); } log.debug("other is:" + prop.getProperty("other"));//返回other value prop.setProperty("setting1", "value2"); log.debug("other is:" + prop.getProperty("other")); try { fos = new FileOutputStream(new File("." + File.separator + "config.properties")); } catch (FileNotFoundException ex) { ex.printStackTrace(); throw new SystemException("File config.properties NOT found!"); } //save the properties try { prop.store(fos, null); } catch (IOException e) { e.printStackTrace(); throw new SystemException("Error when save the config.properties."); } }
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1