集合与IO的一个小联系

------<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>、期待与您
交流!------

时间: 2024-10-13 10:24:59

集合与IO的一个小联系的相关文章

9行代码体现集合框架中的一个小细节

String[] strs = {"string--01", "string--02", "string--03", "string--04"};List<String> strsList = Arrays.asList(strs);//以下语句输出:[string--01, string--02, string--03, string--04]System.out.println(strsList); int[]

黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或文件夹封装成对象 (2)方便于对“文件”与“文件夹属性信息”进行操作 (3)File对象,可以作为参数传递给流的构造函数 (二)构造方法 * 通过File的构造函数创建File对象 方式1:File f = new File("c:\\a.txt"); 方式2:File f2 = newF

集合与IO流结合的练习

Edit 集合与IO流结合的练习 练习: 有五个学生,每个学生有3门课程:数学,语文,英语 从键盘输入以上数据(包括姓名,三门课成绩), 输入的格式:zhangsan, 30, 40, 40计算出总成绩, 并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中. 1.描述学生对象; 2.定义一个可操作学生对象的工具类; 思路: 1.通过获取键盘录入的一行数据,并将录入的信息封装成学生对象; 2.因为学生对象很多,且要对学生的总分排序,所以用TreeSet集合; 3.

【DAY12】第十二天集合&泛型&IO学习笔记

hash:散列 ------------------ Hashset集合内部是通过HashMap进行实现的.使用的是HashMap中key部分. 对象在添加进集合中时,首选会对hashcode进行处理(hashcode右移16位和 自身做异或运算)得到一个经过处理的hash值,然后该值和集合的容量进行 &运算,得到介于0和集合容量值之间一个数字.该数字表示着数组的下标. 也就是该元素应该存放在哪个元素中. Map与Collection -------------- Map与Collection在

用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量.<s:iterator>标签有一个value属性,用来存放在Action类的方法中存数据的list集合,还有一个id,好像是说指定集合的索引的意思,就是给list集合遍历出来的每个对象加上一个数字标签,反正我是这么理解的,没用过.还有一个很重要,就是var变量,我在s:iterator按ctr

Python练习册,每天一个小程序

Python练习册,每天一个小程序 精选评论关注该公众号可参与评论 写评论 加载中 以上评论由公众帐号筛选后显示 Python练习册,每天一个小程序 提交 我的评论 已评论 Python练习册,每天一个小程序 2014-12-15 程序猿 说明: ●Python 练习册,每天一个小程序.注:将 Python 换成其他语言,大多数题目也试用 ●不会出现诸如「打印九九乘法表」.「打印水仙花」之类的题目 ●欢迎大家 Pull Request 出题目,贴代码(Gist.Blog皆可):-) ●访问链接h

【开源一个小工具】一键将网页内容推送到Kindle

最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zhanjindong/SimpleSendToKindle 功能:Windows下一个简单的将网页内容推送到Kindle的工具. 写这个工具的是满足自己的需求.自从买了Kindle paperwhite 2,它就成了我使用率最高的一个电子设备.相信很多Kindle拥有者和我一样都有这样一个需求:就是白

vue + socket.io实现一个简易聊天室

vue + vuex + elementUi + socket.io实现一个简易的在线聊天室,提高自己在对vue系列在项目中应用的深度.因为学会一个库或者框架容易,但要结合项目使用一个库或框架就不是那么容易了.功能虽然不多,但还是有收获.设计和实现思路较为拙劣,恳请各位大大指正. 可以达到的需求 能查看在线用户列表 能发送和接受消息 使用到的框架和库 socket.io做为实时通讯基础 vuex/vue:客户端Ui层使用 Element-ui:客户端Ui组件 类文件关系图 服务端: 客户端: 服

有关贝祖定理的一个小问题

有关贝祖定理的一个小问题 所谓贝祖定理是说: 两个整数 a.b 是互质的,等价于方程 ax+by=1有整数解. 当然, 贝祖定理还有一种更一般的形式,说的是两个整数 a.b有最大公因数是c,等价于方程 ax+by=c有整数解. 这两种表述其实是等价的,因为对第二种形式稍微一变形就得到了: 所以我们只需要考虑第一种形式的贝祖定理就可以了. 贝祖定理的证明 贝祖定理的证明并不复杂,不过因为无论是中学还是大学(除了数学专业)都很少讨论这类跟数论相关的问题,所以可能有些人会感觉这个问题有些无从下手. 这