java基础学习之Properties 十二

你的名字 2024-02-17 19:42 109阅读 0赞

Properties类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。

因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 putputAll 方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String 的项。相反,应该使用 setProperty 方法。如果在“不安全”的 Properties 对象(即包含非 String 的键或值)上调用 storesave 方法,则该调用将失败。类似地,如果在“不安全”的 Properties 对象(即包含非 String 的键)上调用 propertyNameslist 方法,则该调用将失败。

load(Reader) / store(Writer, String) 方法按下面所指定的、简单的面向行的格式在基于字符的流中加载和存储属性。除了输入/输出流使用 ISO 8859-1 字符编码外,load(InputStream) / store(OutputStream, String) 方法与 load(Reader)/store(Writer, String) 对的工作方式完全相同。可以使用 Unicode 转义来编写此编码中无法直接表示的字符;转义序列中只允许单个 ‘u’ 字符。可使用 native2ascii 工具对属性文件和其他字符编码进行相互转换。

loadFromXML(InputStream)storeToXML(OutputStream, String, String) 方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:

  1. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

注意,导入或导出属性时 访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个唯一标识 DTD 的字符串:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- DTD for properties -->
  3. <!ELEMENT properties ( comment?, entry* ) >
  4. <!ATTLIST properties version CDATA #FIXED "1.0">
  5. <!ELEMENT comment (#PCDATA) >
  6. <!ELEMENT entry (#PCDATA) >
  7. <!ATTLIST entry key CDATA #REQUIRED>

Properties简单使用:

  1. package properties;
  2. import java.util.Properties;
  3. import java.util.Set;
  4. /**
  5. *
  6. * @author Angus
  7. * Properties
  8. * 可以和IO流结合使用,建和值都是字符串
  9. * Properties的父类为HashTable,可以看成Map体系的。
  10. */
  11. public class PropertiesDemo {
  12. public static void main(String[] args) {
  13. //创建集合对象
  14. Properties prop = new Properties();
  15. //添加元素
  16. prop.put("001", "hello");
  17. prop.put("002", "world");
  18. prop.put("003", "java");
  19. //遍历
  20. Set<Object> keySet = prop.keySet();
  21. for (Object object : keySet) {
  22. Object object2 = prop.get(object);
  23. System.out.println(object+"****"+object2);
  24. }
  25. }
  26. }

结果
Center

特殊方法的使用:

  1. package properties;
  2. import java.util.Properties;
  3. import java.util.Set;
  4. /**
  5. *
  6. * @author Angus
  7. * 特殊方法:
  8. * 1;修改
  9. * setProperty(String key, String value) 调用 Hashtable 的方法 put。
  10. * 2:获取
  11. * getProperty(String key) 用指定的键在此属性列表中搜索属性。
  12. * getProperty(String key, String defaultValue) 用指定的键在属性列表中搜索属性。
  13. * stringPropertyNames() 返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
  14. */
  15. public class PropertiesDemo {
  16. public static void main(String[] args) {
  17. //创建集合对象
  18. Properties prop = new Properties();
  19. //添加元素
  20. prop.setProperty("001", "hello");
  21. prop.setProperty("002", "world");
  22. prop.setProperty("003", "java");
  23. System.out.println(prop.getProperty("001"));
  24. System.out.println(prop.getProperty("002"));
  25. System.out.println(prop.getProperty("003"));
  26. System.out.println("----------------------------------");
  27. System.out.println(prop.getProperty("003", "没有啊"));
  28. System.out.println(prop.getProperty("004", "没有啊"));
  29. System.out.println("----------------------------------");
  30. Set<String> set = prop.stringPropertyNames();
  31. for (String key : set) {
  32. String value = prop.getProperty(key);
  33. System.out.println(key+"***"+value);
  34. }
  35. System.out.println("----------------------------------");
  36. //遍历
  37. Set<Object> keySet = prop.keySet();
  38. for (Object object : keySet) {
  39. Object object2 = prop.get(object);
  40. System.out.println(object+"****"+object2);
  41. }
  42. }
  43. }

结果:

Center 1

系统属性方法:getProperties

  1. package properties;
  2. import java.util.Properties;
  3. import java.util.Set;
  4. /**
  5. * @author Angus
  6. * getProperties 系统属性
  7. */
  8. public class PropertiesDemo {
  9. public static void main(String[] args) {
  10. Properties prop = System.getProperties();
  11. System.out.println(prop.size());
  12. Set<String> set = prop.stringPropertyNames();
  13. for (String key : set) {
  14. String value = prop.getProperty(key);
  15. System.out.println(key+"****"+value);
  16. }
  17. }
  18. }

各种属性;

Center 2

Properties和IO流的结合

  1. package properties;
  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.PrintWriter;
  6. import java.util.Properties;
  7. import java.util.Set;
  8. /**
  9. * @author Angus
  10. * Properties和IO流的结合
  11. * list(PrintStream out) 将属性列表输出到指定的输出流。
  12. * list(PrintWriter out) 将属性列表输出到指定的输出流。
  13. */
  14. public class PropertiesDemo {
  15. public static void main(String[] args) throws IOException{
  16. //获取系统的属性集合
  17. Properties prop =System.getProperties();
  18. //需求,把数据写到文本文件
  19. //方式一 但是这样并没有结合到一起
  20. // BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
  21. //
  22. // Set<String> stringPropertyNames = prop.stringPropertyNames();
  23. // for (String string : stringPropertyNames) {
  24. // String property = prop.getProperty(string);
  25. // bw.write(string);
  26. // bw.write("=");
  27. // bw.write(property);
  28. // bw.newLine();
  29. // bw.flush();
  30. // }
  31. // bw.close();
  32. //方式二 list(PrintWriter out)
  33. PrintWriter pw = new PrintWriter("b.txt");
  34. prop.list(pw);
  35. pw.close();
  36. }
  37. }

结果;

Center 3

从文本文件加载数据

  1. package properties;
  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.PrintWriter;
  7. import java.util.Properties;
  8. import java.util.Set;
  9. /**
  10. * @author Angus
  11. *
  12. * 从文本文件加载数据
  13. * load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。
  14. * load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
  15. */
  16. public class PropertiesDemo {
  17. public static void main(String[] args) throws IOException{
  18. Properties prop = new Properties();
  19. //创建FileReader对象
  20. FileReader fr = new FileReader("a.txt");
  21. prop.load(fr);
  22. fr.close();
  23. System.out.println(prop.size()); //4
  24. System.out.println(prop); //{张三4=114, 张三3=113, 张三2=112, 张三1=111}
  25. Set<String> stringPropertyNames = prop.stringPropertyNames();
  26. for (String key : stringPropertyNames) {
  27. String value = prop.getProperty(key);
  28. System.out.println(key+"***"+value);
  29. }
  30. }
  31. }

结果;

Center 4

最后附上JDK使用文档API 下载

发表评论

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

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

相关阅读

    相关 java基础学习反射

    反射 是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法;对于任意一个对象,都只能都调用它的任意一个 方法和属性,这种动态获取的信息一级动态