要求:
//我有一个文本文件studentscore.txt,我知道数据是键值对形式的,但是不知道内容是什么。 //请写一个程序判断是否有"lisi"这样的键存在,如果有就改变其值为"100" //studentscore.txt文件内容如下: //zhangsan = 90 //lisi = 80 //wangwu = 85
修改前内容
代码:
import java.io.*; import java.util.Properties; import java.util.Set; public class Test01 { public static void main(String[] args) { //1.调用方法写入文件内容 // writerPro(); //2.定义属性集合将指定配置文件中的内容读取到文件中同时遍历集合中是否存在"lisi" //如果存在则将其原来的值改成"100"并写入到该文件中 Properties properties = new Properties(); try (Reader in = new FileReader("studentscore.txt"); Writer out = new FileWriter("studentscore.txt", true)) {//追加写入,不覆盖文件中原有的内容 //读取文件中的内容,并存入定义好的集合中 properties.load(in); //获取集合中所有的键的集合 Set<Object> keys = properties.keySet(); //遍历集合查找是否有指定的键,如果有就将其对应的值修改 for (Object obj : keys) { if (((String) obj).equals("lisi")) {//如果存在对应的键 properties.setProperty((String) obj, "100");//修改其对应的值 properties.store(out,"score_1"); break;//结束循环 } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //定义方法提前写入文件内容 private static void writerPro() { //定义属性集合 Properties pro = new Properties(); pro.setProperty("zhangsan", "90"); pro.setProperty("lisi", "80"); pro.setProperty("wangwu", "85"); //创建输出流将集合内容写入到文件 try (Writer out = new FileWriter("studentscore.txt")) { pro.store(out,"score"); } catch (IOException e) { e.printStackTrace(); } } }
运行结果: