1,Java IO中各类间的继承关系(如图所示)。
3,RandomAccessFile类可以从指定的位置开始读取信息,但是要求文件中各个数据的保存长度必须固定。
4,输入/输出流主要分为字节流(OutputStream,InputStream)和字符流(Writer,Reader)两种,但是在传输中以字节流操作较多,字符流在操作时使用到缓冲区,而字节流没有使用到缓
冲区。
5,字节或字符流都是以抽象类的形式定义的,根据其使用的子类不同,输入或输出的位置也不同。
6,在IO包中可以使用OutputStreamWriter和InputStreamReader完成字符流与字节流之间的转换操作。
7,使用ByteArrayInputStream和ByteArrayOutputStream类可以对内存进行输入/输出操作。
8,在线程之间进行输入/输出通信,主要使用PipedOutputStream和PipedInputStream类。
9,在IO中输出时最好使用打印流(PrintStream,PrintWriter),这样可以方便输出各种类型的数据。
10,System类提供了3个支持IO操作的常量即out,err,in。
a,System.out:对应显示器的标准输出。
b,System.err:对应错误打印,一般此信息不希望被用户看到。
c,System.in:对应标准的键盘输入。
在程序操作中,根据setOut()方法可以修改System.out的输出位置,可以使用setErr()方法修改System.err的输出位置,也可以使用setIn()方法修改System.in的输入位置。
11,BufferedReader可以直接从缓冲区中读取数据。
12,使用Scanner可以直接从缓冲区中读取数据。
13,数据操作流提供了与平台无关的数据操作,主要使用DataOutputStream和DataInputStream类。
14,使用合并流(SequenceInputStream)可以将两个文件的内容进行合并。
15,如果数据量过大,则可以使用压缩流压缩数据,在Java中支持ZIP,JAR和GZIP 3种压缩格式。
16,使用回退流可以将不需要的数据回退到数据缓冲区中以待重新读取。
17,造成字符乱码的根本原因就在于程序编码与本地编码的不统一。
18,对象序列化可以将内存中的对象转换成为二进制数据,但对象所在的类必须实现Serializable接口,一个类中的属性如果使用transient关键字声明,则此属性的内容将不会被序列化。
19,对象的输入/输出主要使用ObjectInputStream和ObjectOutputStream两个类完成。