Properties集合类

ゝ一世哀愁。 2024-03-30 16:15 121阅读 0赞

Properties

Properties属于集合 ,它有个其他集合不具备的特殊能力,能够直接操作文件。

它操作的文件被称为”属性文件”或者Properties文件。这种文件的格式非常简单易用,所以它也是常用的配置文件之一。

属性文件的特殊格式是:

key=value 对 的方式来构建文本;

Properties对象可以直接从这种文件当中读取数据,同样用键值对的方式进行存放;

也能把存放到Properties数据

键key不能重复

值value可以重复 通过键 可以查找出值;

  1. public class TestProps {
  2. public static void propsMethodShow() {
  3. Properties props = new Properties();//产生一个没有装东西的Properties容器
  4. //放入数据 --- 键与值必须成对放入,都是String
  5. // --- 必须保证键不能重复
  6. props.setProperty("J001","江小白1");
  7. props.setProperty("J002","江小白2");
  8. /*修改数据 --- 仍然调用setPropetiy方法,第一个参数是存在的键,
  9. 那么就会修改这个键对应的值为第二个参数。*/
  10. props.setProperty("J002","江小白02");
  11. //删除数据 --- 1、只需要传入键,如果这个键存在,那么就删除掉这对键值对
  12. // 2、remove方法接收的参数不是String,而是Object
  13. // 这是一个Properties从集合框架当中继承而来的行为。
  14. props.remove("J002");
  15. //获取数据 --- 根据键获取值,如果键不存在不会报异常,而是返回null
  16. String value = props.getProperty("J001");
  17. System.out.println(value);
  18. }
  19. /*
  20. 文件路径有两种表示形式:
  21. 1、相对路径;--- 相对路径的是相对于我们的工程目录
  22. file/student.data
  23. 2、绝对路径; --- D:/文件夹/子文件夹/文件名
  24. */
  25. public static void readFile(){
  26. Properties props = new Properties();
  27. try {
  28. props.load(new FileInputStream("file/student.properties"));
  29. } catch (IOException e) {
  30. e.printStackTrace();
  31. }
  32. System.out.println(props.size());
  33. System.out.println(new String(props.getProperty("J192002").getBytes(StandardCharsets.ISO_8859_1)));
  34. }
  35. public static void writeFile(){
  36. Properties props = new Properties();
  37. props.setProperty("1314","hello");
  38. props.setProperty("1315","world");
  39. try {
  40. /*
  41. 1、把文件操作类换成FileOutputStream;
  42. 2、如果文件不存在,不会报错,而是会产生新文件;
  43. 3、comments参数代表的是你可以写入到properties文件中的注释,可不写;
  44. 4、用store方法存进去
  45. */
  46. props.store(new FileOutputStream("file/stu.data"),"");
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. }

练习:

  1. 输入学生学号,获取学生对象
  2. public static void practise(){
  3. Properties stuProps = new Properties();
  4. try {
  5. stuProps.load(new FileInputStream("file/student.properties"));
  6. } catch (IOException e) {
  7. e.printStackTrace();
  8. }
  9. System.out.println("请输入学生学号:");
  10. String input = new Scanner(System.in).next();
  11. String stuValue = stuProps.getProperty(input);
  12. if(stuValue != null){
  13. String[] stuValues = stuValue.split("[-]");
  14. Student stu = new Student(stuValues[1],Integer.parseInt(stuValues[2]),stuValues[0]);
  15. System.out.println(stu);
  16. }else{
  17. System.out.println("该学号学生不存在。");
  18. }
  19. }

大多数情况,不会直接用这个类的对象来充当容器存放数据,而是专门用它来操作properties文件。properties文件结构简单,不能存放复杂结构的数据,但是对于简单的配置场景还是很好用的。

发表评论

表情:
评论列表 (有 0 条评论,121人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Properties

      Properties类:继承了HashTable实现了Map接口,用于对配置文件的操作。 (1)setProperty与getProperty的使用: ![13925