以下来自新浪博客:http://blog.sina.com.cn/s/blog_6e5195850100mh5v.html
一.SequenceInputStream 序列流
1.可以将多个InputStream合并
2.序列流有两个构造函数
1).两个InputStream合并
2).多个InputStream合并, 通过Enumeration, 可以将多个流装入Vector, 调用elements()方法获得Enumeration
3.在读取序列流的数据的时候, 会依次读每一个流中的数据, 第一个流读到了末尾, 会继续读第二个, 以此类推. 读到最后一个流末尾返回-1
二.ObjectInputStream, ObjectOutputStream, 对象操作流
1.可以将程序中的对象写出.
2.对象必须实现Serializable接口, 这个接口是一个标识, 标志着实现了这个接口的类可以被序列化, 其中没有任何方法.
3.ObjectInputStream和ObjectOutputStream成对使用, ObjectOutputStream写出的对象可以用ObjectInputStream读出来.
4.在读的时候, 如果到达文件末尾, 会抛出异常java.io.EOFException
5.在一个文件中, 尽量只写一个对象.
三.PrintStream, PrintWriter, 打印流
1.printStream.write(98)
1).由于是字节流, 会将int转为byte
2).先将int值98强转成byte,去掉高位24位,然后写出去
2.printStream.print(98)
1).首先这个98是一个int值, 会自动装箱成Integer
2).print方法会调用实参的toString方法.得到一个字符串
3).将这个字符串编码, String.getBytes();
4).将二进制数组写出去
3.printWriter.write(20013)
1).由于是字符流, 会将int转为char
2).先将int值20013强转为char, 去掉前面16位, 然后写出去.
4.printWriter.print(98);
1).首先这个98是一个int值, 会自动装箱成Integer
2).print方法会调用实参的toString方法.得到一个字符串
3).直接将这个字符串写出
四.DataStream
1.DataOutputStream可以将基本数据类型按存储大小输出, writeInt()输出4个字节, writeChar()输出2个字节
2.DataInputStream可以按基本数据类型大小读取数据, readInt()读4个自己, 转换为int, readChar()读2个字节, 转为char
五.内存操作流
1.ByteArrayInputStream可以接受一个byte[], 从内存中读取.
2.ByteArrayOutputStream可以将输入先写到内存中, 之后通过toByteArray()转成byte[]
六.管道流
1.PipedInputStream和PipedOutputStream搭配使用, 通过connect()方法连接, 之后从输出流中写出的数据, 就可以在输入流中接受到了
七.随机读写文件 RandomAccessFile
1.在创建对象的时候可以指定mode, "r","rw", 只读,或者读写
2.通过对象的read(),write()方法可以对文件读写
3.seek()方法可以定位指针, 操作读写的位置
0.逐行读取day17-笔记.txt, 将所有行反向输出到另外一个文件. (第一行写到最后一行, 第二行写到倒数第二行)
1.接受用户输入一个路径, 将路径中所有.java文件拷贝到另外一个路径中, 并且重命名为.txt文件
2.接受用户输入一个路径, 将该路径中所有.java文件删除