




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 序列流SequneceInputStreamDemo.javapackage cn.itcast_06;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.SequenceInputStream;/* * 以前的操作: * a.txt - b.txt * c.txt - d.txt * * 现在想要: * a.txt+b.txt - c.txt */public class SequenceInputStreamDemo public static void main(String args) throws IOException / SequenceInputStream(InputStream s1, InputStream s2)/ 需求:把ByteArrayStreamDemo.java和DataStreamDemo.java的内容复制到Copy.java中InputStream s1 = new FileInputStream(ByteArrayStreamDemo.java);InputStream s2 = new FileInputStream(DataStreamDemo.java);SequenceInputStream sis = new SequenceInputStream(s1, s2);BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(Copy.java);/ 如何写读写呢,其实很简单,你就按照以前怎么读写,现在还是怎么读写byte bys = new byte1024;int len = 0;while (len = sis.read(bys) != -1) bos.write(bys, 0, len);bos.close();sis.close();SequneceInputStreamDemo2.javapackage cn.itcast_06;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.SequenceInputStream;import java.util.Enumeration;import java.util.Vector;/* * 以前的操作: * a.txt - b.txt * c.txt - d.txt * e.txt - f.txt * * 现在想要: * a.txt+b.txt+c.txt - d.txt */public class SequenceInputStreamDemo2 public static void main(String args) throws IOException / 需求:把下面的三个文件的内容复制到Copy.java中/ ByteArrayStreamDemo.java,CopyFileDemo.java,DataStreamDemo.java/ SequenceInputStream(Enumeration e)/ 通过简单的回顾我们知道了Enumeration是Vector中的一个方法的返回值类型。/ Enumeration elements()Vector v = new Vector();InputStream s1 = new FileInputStream(ByteArrayStreamDemo.java);InputStream s2 = new FileInputStream(CopyFileDemo.java);InputStream s3 = new FileInputStream(DataStreamDemo.java);v.add(s1);v.add(s2);v.add(s3);Enumeration en = v.elements();SequenceInputStream sis = new SequenceInputStream(en);BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(Copy.java);/ 如何写读写呢,其实很简单,你就按照以前怎么读写,现在还是怎么读写byte bys = new byte1024;int len = 0;while (len = sis.read(bys) != -1) bos.write(bys, 0, len);bos.close();sis.close();3 序列化流ObjectSteamDemo.javapackage cn.itcast_07;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;/* * 序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 - 流数据(ObjectOutputStream) * 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。流数据 - 对象(ObjectInputStream) */public class ObjectStreamDemo public static void main(String args) throws IOException,ClassNotFoundException / 由于我们要对对象进行序列化,所以我们先自定义一个类/ 序列化数据其实就是把对象写到文本文件/ write();read();private static void read() throws IOException, ClassNotFoundException / 创建反序列化对象ObjectInputStream ois = new ObjectInputStream(new FileInputStream(oos.txt);/ 还原对象Object obj = ois.readObject();/ 释放资源ois.close();/ 输出对象System.out.println(obj);private static void write() throws IOException / 创建序列化流对象ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(oos.txt);/ 创建对象Person p = new Person(林青霞, 27);/ public final void writeObject(Object obj)oos.writeObject(p);/ 释放资源oos.close();Person,javapackage cn.itcast_07;import java.io.Serializable;/* * NotSerializableException:未序列化异常 * * 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 * 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口。 * * java.io.InvalidClassException: * cn.itcast_07.Person; local class incompatible: * stream classdesc serialVersionUID = -2071565876962058344, * local class serialVersionUID = -8345153069362641443 * * 为什么会有问题呢? * Person类实现了序列化接口,那么它本身也应该有一个标记值。 * 这个标记值假设是100。 * 开始的时候: * Person.class - id=100 * wirte数据: oos.txt - id=100 * read数据: oos.txt - id=100 * * 现在: * Person.class - id=200 * wirte数据: oos.txt - id=100 * read数据: oos.txt - id=100 * 我们在实际开发中,可能还需要使用以前写过的数据,不能重新写入。怎么办呢? * 回想一下原因是因为它们的id值不匹配。 * 每次修改java文件的内容的时候,class文件的id值都会发生改变。 * 而读取文件的时候,会和class文件中的id值进行匹配。所以,就会出问题。 * 但是呢,如果我有办法,让这个id值在java文件中是一个固定的值,这样,你修改文件的时候,这个id值还会发生改变吗? * 不会。现在的关键是我如何能够知道这个id值如何表示的呢? * 不用担心,你不用记住,也没关系,点击鼠标即可。 * 你难道没有看到黄色警告线吗? * * 我们要知道的是: * 看到类实现了序列化接口的时候,要想解决黄色警告线问题,就可以自动产生一个序列化id值。 * 而且产生这个值以后,我们对类进行任何改动,它读取以前的数据是没有问题的。 * * 注意: * 我一个类中可能有很多的成员变量,有些我不想进行序列化。请问该怎么办呢? * 使用transient关键字声明不需要序列化的成员变量 */public class Person implements Serializable private static final long serialVersionUID = -2071565876962058344L;private String name;/ private int age;private transient int age;/ int age;public Person() super();public Person(String name, int age) super(); = name;this.age = age;public String getName() return name;public void setName(String name) = name;public int getAge() return age;public void setAge(int age) this.age = age;Overridepublic String toString() return Person name= + name + , age= + age + ;7 猜数字小游戏GuessNumber.javapackage cn.itcast_08;import java.util.Scanner;/* * 这是猜数字小游戏 * * author 风清扬 * version V1.1 * */public class GuessNumber private GuessNumber() public static void start() / 产生一个随机数int number = (int) (Math.random() * 100) + 1;/ 定义一个统计变量int count = 0;while (true) / 键盘录入一个数据Scanner sc = new Scanner(System.in);System.out.println(请输入数据(1-100):);int guessNumber = sc.nextInt();count+;/ 判断if (guessNumber number) System.out.println(你猜的数据 + guessNumber + 大了); else if (guessNumber number) System.out.println(你猜的数据 + guessNumber + 小了); else System.out.println(恭喜你, + count + 次就猜中了);break;PropertiesDemo.javapackage cn.itcast_08;import java.util.Properties;import java.util.Set;/* * Properties:属性集合类。是一个可以和IO流相结合使用的集合类。 * Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 * * 是Hashtable的子类,说明是一个Map集合。 */public class PropertiesDemo public static void main(String args) / 作为Map集合的使用/ 下面这种用法是错误的,一定要看API,如果没有,就说明该类不是一个泛型类,在使用的时候就不能加泛型/ Properties prop = new Properties();Properties prop = new Properties();/ 添加元素prop.put(it002, hello);prop.put(it001, world);prop.put(it003, java);/ System.out.println(prop: + prop);/ 遍历集合Set set = prop.keySet();for (Object key : set) Object value = prop.get(key);System.out.println(key + - + value);PropertiesDemo.javapackage cn.itcast_08;import java.util.Properties;import java.util.Set;/* * 特殊功能: * public Object setProperty(String key,String value):添加元素 * public String getProperty(String key):获取元素 * public Set stringPropertyNames():获取所有的键的集合 */public class PropertiesDemo2 public static void main(String args) / 创建集合对象Properties prop = new Properties();/ 添加元素prop.setProperty(张三, 30);prop.setProperty(李四, 40);prop.setProperty(王五, 50);/ public Set stringPropertyNames():获取所有的键的集合Set set = prop.stringPropertyNames();for (String key : set) String value = prop.getProperty(key);System.out.println(key + - + value);/* * class Hashtalbe public V put(K key,V value) . * * class Properties extends Hashtable public V setProperty(String key,String * value) return put(key,value); */PropertiesDemo.javapackage cn.itcast_08;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.Properties;/* * 这里的集合必须是Properties集合: * public void load(Reader reader):把文件中的数据读取到集合中 * public void store(Writer writer,String comments):把集合中的数据存储到文件 * * 单机版游戏: * 进度保存和加载。 * 三国群英传,三国志,仙剑奇侠传. * * 吕布=1 * 方天画戟=1 */public class PropertiesDemo3 public static void main(String args) throws IOException / myLoad();myStore();private static void myStore() throws IOException / 创建集合对象Properties prop = new Properties();prop.setProperty(林青霞, 27);prop.setProperty(武鑫, 30);prop.setProperty(刘晓曲, 18);/public void store(Writer writer,String comments):把集合中的数据存储到文件Writer w = new FileWriter(name.txt);prop.store(w, helloworld);w.close();private static void myLoad() throws IOException Properties prop = new Properties();/ public void load(Reader reader):把文件中的数据读取到集合中/ 注意:这个文件的数据必须是键值对形式Reader r = new FileReader(prop.txt);prop.load(r);r.close();System.out.println(prop: + prop);PropertiesTest.javapackage cn.itcast_08;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.Properties;import java.util.Set;/* * 我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么。 * 请写一个程序判断是否有“lisi”这样的键存在,如果有就改变其实为”100” * * 分析: * A:把文件中的数据加载到集合中 * B:遍历集合,获取得到每一个键 * C:判断键是否有为lisi的,如果有就修改其值为100 * D:把集合中的数据重新存储到文件中 */public class PropertiesTest public static void main(String args) throws IOException / 把文件中的数据加载到集合中Properties prop = new Properties();Reader r = new FileReader(user.txt);prop.load(r);r.close();/ 遍历集合,获取得到每一个键Set set = prop.stringPropertyNames();for (String key : set) / 判断键是否有为lisi的,如果有就修改其值为100if (lisi.equals(key) prop.setProperty(key, 100);break;/ 把集合中的数据重新存储到文件中Writer w = new FileWriter(user.txt);prop.store(w, null);w.close();PropertiesTest2.javapackage cn.itcast_08;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.Properties;/* * 我有一个猜数字小游戏的程序,请写一个程序实现在测试类中只能用5次,超过5次提示:游戏试玩已结束,请付费。 */public class PropertiesTest2 public static void main(String args) throws IOException / 读取某个地方的数据,如果次数不大于5,可以继续玩。否则就提示游戏试玩已结束,请付费。/ 创建一个文件/ File file = new File(count.txt);/ if (!file.exists() / file.createNewFile();/ / 把数据加载到集合中Properties prop = new Properties();Reader r = new FileReader(count.txt);prop.load(r);r.close();/ 我自己的程序,我当然知道里面的键是谁String value = prop.getProperty(count);int number = Integer.parseInt(value);if (number 5)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二手电动摩托车环保材料研发与生产合同范本
- 2025年出口贸易货运代理全面服务合同
- 2025宾馆客房用品一站式采购及服务合同
- 2025标准个人医疗贷款合同范本
- 2025年度知识产权法律保护与维权服务合同范本
- 2025年度企业员工职业规划与就业指导合同
- 2025年度奢侈品导购员服务协议及销售提成合同
- 2025版教师综合素养与职业道德聘用合同
- 2025年单身公寓租赁合同编制指南
- 2025年度国有企业员工试用期劳动合同及福利
- GB/T 2679.7-2005纸板戳穿强度的测定
- GB/T 25146-2010工业设备化学清洗质量验收规范
- GB/T 14825-1993农药可湿性粉剂悬浮率测定方法
- GB/T 12008.7-2010塑料聚醚多元醇第7部分:黏度的测定
- 文化政策与法规(第一课)
- 最全最好的血液净化课件资料
- 色彩基础知识ppt
- 寻找消失的滇缅路:松山战痕课件
- 中小学教师职业道德规范解读
- 部编人教版《道德与法治》九年级上册教材介绍课件
- 政府预算理论与实务(第四版)全套教学课件
评论
0/150
提交评论