IO流:
java程序是通过流来完成输入/输出。java.io.*
字节流和字符流
字节流(byte stream):以字节为读写单位
字符流(character stream):以字符为读写单位
1.国际化
2.提高了读写效率
一个字符占两个字节,一个汉字占两个字节。
java中是双字节(unicode)编码,所以,一个字符占两个字节。
utf-8 国际化
gb2312
gbk
big5
iso-8859-1
输出文件------写操作 write()
输入文件------读操作 read()
字节流类:以字节为单位进行读写操作。因此处理的文件都是以字节为单位的编码文件。
InputStream read(); OutputStream write(); 描述流输入/输出的抽象类
第一组:FileInputStream FileOutputStream 读取文件的输入流/写文件的输出流
第二组:BufferedInputStream BufferedOutputStream 缓冲输入/输出流 调用flush()刷新
第三组:System.in System.out 已是InputStream/PrintStream的对象
第四组:PipedInputStream PipedOutputStream 一般用在多线程的程序中,又可以称为管道流
第五组:ObjectInputStream ObjectOutputStream这组流是用来解决对象串行化的(对象序列化)
问:什么是串行化?如何实现?
就是用来保存一个对象的状态(游戏的存盘),一个对象的状态想要保存,
其类必须实现序列化接口(java.io.Serializable)这个接口里面没有任何方法,它只是一种强制规定。
问:Serializable和synchronized分别用在什么场合?
synchronized {
//同步块
}
字符流类:以字符为单位进行读写操作。
Reader read(); Writer write(); 抽象类
第一组:InputStreamReader OutputStreamWriter
第二组:FileReader FileWriter
第三组:BufferedReader readLine() PrintWriter println()
想要一次读一行只能用BufferedReader,没有提供其它类用来读一行
BufferedWriter 中的write()不会换行!
PrintWriter 中的println()直接换行,更加简单!
问:字符流中哪一个类有一次读取一行的方法?
问:项目中用什么流比较合适?
字节流可以读写任何类型文件,但字符流读写文字比较合适。
代码实现:
文件 Lesson1.txt
内容 hello world!
倒序输出 abc.txt 文件中