Peoperties类,SequenceInputStream序列流(合并流)、切割合并文件

util包

Peoperties是hashtable的子类。
也就是说它具备了map集合的特点,而且它里面存储的键值对都是字符串。

是集合中和IO技术相结合的集合容器。

该对象的特点,可以用于键值对形式的配置文件。

那么在加载数据时,需要数据有固定格式,通常键=值

public class PropertiesDemo_11 {

    public static void main(String[] args) throws IOException {
        
        //setAndGet();
        //method_1();
        loadDemo();
    }
    public static void loadDemo() throws IOException
    {
        Properties prop = new Properties();
        FileInputStream fis = new FileInputStream("info.txt");
        
        //将流中的数据加载进集合。
        prop.load(fis);
        
        prop.setProperty("wangwu", "39");//改变的是内存的结果,文件没有被改
        FileOutputStream fos = new FileOutputStream("info.txt");
        
        prop.store(fos, "haha");
        //System.out.println(prop);
        prop.list(System.out);
        fis.close();
        fos.close();
        
    }
    //演示,如何将流中的数据存储到集合中
    //想要将info.txt中键值数据存到集合中进行操作
    /*思路:
    1、用一个流和info.txt文件关联
    2、读取一行数据,该行数据用“=”进行切割
    3、等号左边作为键,右边作为值,存入到Properties集合中即可。
    */
    public static void method_1() throws IOException
    {
        BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
        String line = null;
        Properties prop = new Properties();
        while((line=bufr.readLine())!=null)
        {
            String[] arr = line.split("=");
            //System.out.println(arr[0]+"..."+arr[1]);
            prop.setProperty(arr[0], arr[1]);
        }
        bufr.close();
        System.out.println(prop);
    }
    
    //设置和获取元素
    public static void setAndGet()
    {
        Properties prop = new Properties();
        prop.setProperty("zhangsan", "30");
        prop.setProperty("lisi", "39");
        //System.out.println(prop);
        //String value = prop.getProperty("lisi");
        //System.out.println(value);
        prop.setProperty("wangwu", 88+"");
        
        
        Set<String> name = prop.stringPropertyNames();
        for(String s:name)
        {
            System.out.println(s+":"+prop.getProperty(s));
            
        }
    }
    

}
PropertiesDemo_11
/*
用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。

很容易想到的是:计数器。
可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行了自增。
可是随着该应用程序的退出,该计数器也在内存中消失了。

下一次再启动该程序,又重新开始从0计数。
这样不是我们想要的。

程序即使结束,该计数器的值也存在。
下次程序启动会先加载该计数器的值并加1后再重新存储起来。

所以要建立一个配置文件,用于记录该软件的使用次数。

该配置文件使用键值对的形式,
这样便于阅读数据,并操作数据。

键值对数据是map集合。
数据是以文件形式存储,使用IO技术,
那么map+io-->properties

配置文件可以实现应用程序数据的共享。

 */
public class PropertiesTest_14 {   //RunCount

    public static void main(String[] args) throws IOException {
        
        Properties prop = new Properties();
        
        File file = new File("count.properties");
        if(!file.exists())
            file.createNewFile();
        FileInputStream fis = new FileInputStream(file);
        
        //流中数据加载在集合中
        prop.load(fis);
        
        int count = 0;
        String value = prop.getProperty("time");
        if(value!=null)
        {
            count = Integer.parseInt(value);
            if(count>=5)
            {
                System.out.println("您好,使用次数已到,拿钱!");
                return;
            }
        }
        count++;
        prop.setProperty("time", count+"");
        
        FileOutputStream fos = new FileOutputStream(file);
        
        prop.store(fos,"");
        fos.close();
        fis.close();
    }

}
/*
<persons>
    <person od="001">
        <name>zhangsan</name>
        <age>30</age>
        <address>bj</address>
    </person>
    <person>
        <name>
    </person>
</persons>

dom4j    dom for java    four
*/
PropertiesTest_14
原文地址:https://www.cnblogs.com/cailingsunny/p/4698736.html