[16]序列流
一.序列流
1.什么是序列流
SequenceInputStream, 可以将多个InputStream整合成一个, 然后使用SequenceInputStream读取数据时, 会从被整合的流中逐个读取.
2.使用方式
整合两个输入流, SequenceInputStream(InputStream s1, InputStream s2)
整个多个输入流, SequenceInputStream(Enumeration<? extends InputStream> e)
3.读取方式
和使用其他InputStream相同, read()方法读取一个, read(byte[])可以读取一批
在读到内部第一个输入流末尾时, 自动读取第二个, 以此类推, 直到读到最后一个流的末尾时, 返回-1
二.对象操作流
1.什么是对象操作流
ObjectOutputStream可以写出对象到流中, ObjectInputStream可以从流中读取对象.
2.使用方式
如果一个对象要被写出到流中, 必须实现Serializable.
使用ObjectOutputStream类中的writeObject(Object)写出对象
使用ObjectInputStream类中的readObject()读取对象
3.读写多个对象
通常在存储多个对象的时候, 会将多个对象装入一个集合, 然后一次性写出
* 三.打印流
1.什么是打印流
PrintStream, 可以调用print()和println()方法打印对象的toString()
2.使用方式
创建PrintStream的时候可以指定一个文件, 或者指定一个输出流. 可以设置码表, 可以设置是否自动刷出
* 四.数组操作流
1.什么是数组操作流
ByteArrayOutputStream, 可以向内存中写出数据, 通常用来缓存数据.
2.使用方式
创建ByteArrayOutputStream, 和普通输出流一样写出数据, 然后调用toByteArray()可以获取所有写出的数据组成的一个byte[]
五.数据操作流
1.什么是数据操作流
DataOutputStream, DataInputStream, 可以按照基本数据类型大小读写数据
2.使用方式
DataOutputStream可以使用writeInt(int)写出一个int值, 占4个字节大小.
DataInputStream可以使用readInt()读取4个字节, 转为一个int.
六.随机访问文件
1.什么是随机访问文件
RandomAccessFile, 可以对文件指定位置, 同时读写.
2.使用方式
RandomAccessFile(String name, String mode) name为文件路径, mode为模式"r"是只读, "rw"是读写
RandomAccessFile类中定义了多个读取和写出的方法, 都可以对文件进行操作
使用seek(int)方法可以指定读写的位置
七.正则表达式
1.什么是正则表达式
可以理解为一种描述字符串的规则.
2.正则表达式匹配
使用String类的matches(String)方法判断一个字符串是否匹配指定的正则表达式
3.正则表达式分割
使用String类的split(String)方法将指定的字符串按照正则表达式匹配的分割符分割
4.正则表达式替换
使用String类的replaceAll(String, String)方法将字符串中匹配正则表达式的部分替换为另一个字符串
5.正则表达式查找
创建Pattern对象, 例如: Pattern p = Pattern.compile("[1][3458]\\d{9}");
使用Pattern匹配String, 得到Matcher, 例如: Matcher m = p.matcher("我现在的电话是18600035350, 以前用过13920300351");
查找是否包含匹配正则表达式的部分, 例如: m.find();
获取正则表达式匹配的部分, 例如: m.group();