从数据来源或者说是操作对象角度看,IO 类可以分为:
1、文件:FileInputStream、FileOutputStream、FileReader、FileWriter
2、数组: ByteArrayInputStream、ByteArrayOutputStream、 CharArrayReader、CharArrayWriter
3、管道操作:PipedInputStream、PipedOutputStream、PipedReader、PipedWriter
4、基本数据类型:DataInputStream、DataOutputStream
5、缓冲操作:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
6、打印:PrintStream、PrintWriter
7、对象序列化反序列化:ObjectInputStream、ObjectOutputStream
8、转换:InputStreamReader、OutputStreWriter
字节流和字符流的区别:
字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。)字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件.
IO类和相关方法
IO 类虽然很多,但最基本的是 4 个抽象类:InputStream、OutputStream、Reader、Writer。最基本的方法也就是一个读 read() 方法、一个写 write() 方法。
文本文件的写入和读取
write() 方法和 Append() 方法并不是像方法名那样,一个是覆盖内容,一个是追加内容,append() 内部也是 write() 方法实现的,也非说区别,也就是 append() 方法可以直接写 null,而 write() 方法需要把 null 当成一个字符串写入,所以两者并无本质的区别。需要注意的是这里并没有指定文件编码,可能会出现乱码的问题。