------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、ios培训、.Net培训</a>、期待与您
交流!------
集合与IO的一个小联系:
Properties 是集合中的一员,他是hashtable的子类
也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串
该类最主要的操作是用于操作配置文件的
这里只简单说一下它和IO技术的联系:
查阅API发现:
void list(PrintStream out)
将属性列表输出到指定的输出流。
void list(PrintWriter out)
将属性列表输出到指定的输出流。
void load(InputStream inStream)
从输入流中读取属性列表(键和元素对)。
void load(Reader reader)
按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
void loadFromXML(InputStream in)
将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
该类中提供了很多方法里面的参数是流对象,那么它就可以作为集合和IO技术相结合的集合容器
通过一个小例子来说明下:
需求:将流中的数据存储到Properties集合中
import java.io.*;
import java.util.*;
public class PropertiseDemo
{
public static void main(String[] args)throws IOException
{
loadDemo();
}
/*需求:
* 如何将流中的数据存储到Properties集合中
* 思路:
* 1,创建一个流于文件关联
* 2,读取一行数据将该行数据用=进行切割
* 3,=左边作为键,右边作为值存储到Properties集合中即可
*/
public static void loadDemo() throws IOException
{
FileInputStream ifs=new FileInputStream("d:\\tt.txt");
Properties prop=new Properties();
prop.load(ifs);
System.out.println(prop);
}
public static void ioToMap()throws IOException
{
BufferedReader bufr=new BufferedReader(new FileReader("d:\\tt.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]);
}
System.out.println(prop);
}
public static void getAndSet()
{
Properties prop=new Properties();
prop.setProperty("zhag","78");
prop.setProperty("lisi", "20");
//System.out.println(prop);
//String value=prop.getProperty("lisi");
Set<String> names=prop.stringPropertyNames();
for(String s : names)
{
System.out.println(s+"="+prop.getProperty(s));
}
}
}
这里只是简单的将流中的数据存储到集合中,当然该类还有很多其他用途。比如,应用程序的先试用,使用到一定次数后提示购买正版等。
其实这种做法的原理也就是将你每次运行软件的次数记录到配置文件中,没使用一次该软件,就通过流对象向配置文件中计数。然后判断
次数,调用安全机制。
该日志只是自己学习的一个记录,望见谅!欢迎交流……
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、ios培训、.Net培训</a>、期待与您
交流!------