最后谈IO流
-
数据输入输出流:这个流最大特点是能够读写基本数据类型
-
DataInputStream DataOutputStream //读,怎么写怎么读,顺序不能乱 boolean b= dis.readBoolean(); double v = dis.readDouble(); String s = dis.readUTF(); //写 dos.writeBoolean(true); dos.writeDouble(3.14); dos.writeUTF("一句话") dos.close();
-
内存操作流:这个流不关联任何文件,只能在内存中数据
-
内存操作流,自己在内存中维护着一个缓冲区,我们可以往他维护的缓冲区不断写入数据,也可以从缓冲区中取出我们写入的数据
-
内存操作流无需关闭
-
//创建出内存操作流,它维护者一个字节数组来充当缓冲区 ByteArrayOutputStream bos = new ByteArrayOutputStream(); bos.write("".getBytes()); bos.write("".getBytes()); bos.write("".getBytes()); bos.write("".getBytes()); //取出 byte[] bytes = bos.toByteArray(); String s = new String(bytes); sout(s); //或者用自己带的方法toString()——只能是字符串数据才可用 String s = bos.toString();
-
打印流:只关联目的地,不关联源文件。(只能输出不能读)不是成对出现
-
字节打印流—PrintStream
-
字符打印流—PrintWriter
-
通过创建得来的字节打印流,关联的是文件,就是往文件中打印数据
-
System.out获取出的这个字节打印流,关联的设备是屏幕
-
-
Scanner键盘录入,需要输入字节流
- 使用Scanner和字符打印流配合复制文本文件
- 键盘第二种录入方式
-
随机访问流 RandomAccessFile,父类Object
-
序列化流与反序列化流
- 序列化:将一个Java对象,保存到文件中
- 反序列化:将文件中Java对象,再读回内存
- ObjectOutputStream 序列化流—写对象
- ObjectInputStream 反序列化流—读对象
tips:trasient:排除某个字段不要被序列化
- 属性集合:Properties 继承父类HashTable—双列集合
- 无泛型,规定键值都是字符串类型
- 把数据写入配置文件中
- 把配置文件中的键值对数据再次读回集合中
- Properties 读取配置文件,对文件有要求:1、键值对是用=拼接;2、属性集合读取到的这个文件的后缀名是.properties
- 顺序流:SequenceInputStream
- 压缩流与解压缩流
- 压缩流:ZipOutputStream
- 解压缩:ZipInputStream