JAVA IO流相关代码(Properties类的常见方法与应用)

Posted 小乖乖的臭坏坏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA IO流相关代码(Properties类的常见方法与应用)相关的知识,希望对你有一定的参考价值。

Properties类

Properties是hashtable的子类。
也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
是集合中和IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键=值。

示例代码1

import java.io.*;
import java.util.*;

public class PropertiesDemo

    public static void main(String[] args) throws IOException
    
        //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);

        fos.close();
        fis.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("lisi",89+"");

        Set<String> names = prop.stringPropertyNames();
        for(String s : names)
        
            System.out.println(s+":"+prop.getProperty(s));
        
    




示例代码2

需求:用于记录应用程序运行次数。如果使用次数已到,那么给出注册提示。

分析:
很容易想到的是:计数器。

可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行自增。

可是随着该应用程序的退出,该计数器也在内存中消失了。

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

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

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

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

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

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

import java.io.*;
import java.util.*;
class  RunCount

	public static void main(String[] args) throws IOException
	
		Properties prop = new Properties();

		File file = new File("count.ini");
		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();
		
	

参考:
毕向东

以上是关于JAVA IO流相关代码(Properties类的常见方法与应用)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA IO流相关代码(File类的常见方法与应用)

JAVA IO流相关代码(File类的常见方法与应用)

毕向东_Java基础视频教程第20天_IO流(11~14)

IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,properties与IO流结合))相关知识总结

java-IO流

IO流--与properties集合配合使用