黑马程序员技术交流社区
标题:
关于Properties.store()方法保存原理
[打印本页]
作者:
崔政
时间:
2012-10-30 18:43
标题:
关于Properties.store()方法保存原理
我想知道Properties.store()方法的原理,是重写写全部内容,还是找到需要改的内容,然后单独修改
在毕老师的day20中,有一个练习是从配置文件“properties.txt”读取到集合中,好操作数据
在看视频之前,我自己做了一遍,我是用HashMap做的。
我的代码:
public static void writeProperties()throws IOException{
HashMap<String,String> hm=new HashMap<String,String>();
//BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("properties.txt")));
BufferedWriter bw=new BufferedWriter(new FileWriter("properties.txt"));
hm.put("color", "black");
hm.put("background", "black");
hm.put("size", "111");
Set<Map.Entry<String, String>> set=hm.entrySet();
for(Map.Entry<String, String> me:set){
bw.write(me.getKey()+"="+me.getValue());
bw.newLine();
bw.flush();
}
}
复制代码
上面的代码是将properties.txt删除,然后重新建一个,并添加所有数据
下面是毕老师的代码
public static void loadDemo()throws IOException{
Properties pro=new Properties();
FileInputStream fis=new FileInputStream("properties.txt");
pro.load(fis);
pro.setProperty("size", "14");
FileOutputStream fos=new FileOutputStream("properties.txt");
pro.store(fos,"haha");
}
复制代码
我就是知道store有没有重新建一个文件呢?有没有删除全部数据,然后添加全部数据?还是只修改了部分数据
作者:
李靖
时间:
2012-10-30 21:03
本帖最后由 bhxiaobo 于 2012-10-30 21:05 编辑
public FileOutputStream(String name)
throws FileNotFoundException创建一个向具有指定名称的文件中写入数据的输出文件流。创建一个新 FileDescriptor 对象来表示此文件连接。
首先,如果有安全管理器,则用 name 作为参数调用 checkWrite 方法。
如果该文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它,则抛出 FileNotFoundException。
通过查看javaapi接口,可知道fos必须是已经存在的数据流,所以文件必须先存在。
public void store(OutputStream out,
String comments)
throws IOException以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。使用 ISO 8859-1 字符编码写入该流。
然后将此 Properties 表中的所有项写入 out,一次一行
。对于每个项而言,先写入键字符串,然后是一个 ASCII =,最后是关联元素字符串。检查键和元素字符串的每个字符,确定是否应将其呈现为转义序列。ASCII 字符 \、制表符、换页符、换行符和回车分别作为 \\、\t、\f、\n 和 \r 写入。小于 \u0020 和大于 \u007E 的字符作为 \uxxxx 写入,其中 xxxx 是该字符相应的十六进制值。对于键,所有写入的空白字符前面都有一个 \ 字符。对于元素,所有写入的前导空白字符(但是不嵌入或尾随空白字符)前面都有一个 \ 字符。所有写入的键和元素字符 #、!、= 和 : 前面都有反斜杠,确保能正确地加载这些字符。
通过此项可知,它不是修改某一项,而是全部写入
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2