[AppleScript] 纯文本查看 复制代码
1.创建FileOutputStream对象, 构造方法中绑定要输出的目的地[/align] 2.创建BufferedOutputStream对象, 构造方法中传递FileOutputStream对象, 提高FileOutputStream效率
3.使用BufferedOutputStream对象中的方法 write(), 把数据写入到内部缓冲区中
4.使用BufferedOutputStream对象中的方法 flush(), 把内部缓冲区中的数据,刷新到文件中
5.释放资源(会先调用flush方法刷新数据, 第4步可以省略)
字符缓冲流
BufferedReader 缓冲字符输入流
[AppleScript] 纯文本查看 复制代码
构造方法 BufferedReader(Reader in)
特有方法 String readLine():读一行文字
BufferedWriter 缓冲字符输出流
[AppleScript] 纯文本查看 复制代码
构造方法BufferedWriter(Writer out)
特有方法 void newLine():写一行行分割符
第二章 转换流
编码:按照某种规则将字符存储到计算机中
解码:将存储在计算机中的二进制数按照某种规则解析显示
字符集:ASCII字符集—ASCII编码
GBK字符集—GBK编码
Unicode字符集—UTF8编码、UTF16编码、UTF32编码
ANSI:表示使用系统默认编码表
乱码原因: 读写编码不一致
InputStreamReader类(Reader子类,字节到字符流的桥梁)
[Java] 纯文本查看 复制代码
InputStreamReader(InputStream in):创建一个使用默认字符集的字符流
InputStreamReader(InputStream in, String charsetName):创建一个使用指定字符集的字符流
OutputStreamReader类(Writer子类,字符流到字节流的桥梁)
[Java] 纯文本查看 复制代码
OutputStreamReader(OutputStream out):创建一个使用默认字符集的字符流
OutputStreamReader(OutputStream out, String charsetName):创建一个使用指定字符集的字符流
第二章 序列化
序列化:内存中的对象转换为字节序列, 以流的方式写入到磁盘的文件中
反序列化: 磁盘文件中的字节序列, 以流的方式读取到内存中变成对象
对象序列化流:ObjectOutputStream类
构造方法:ObjectOutputStream(OutputStream out)
特有方法:void writeObject(Object obj):将对象写出
对象反序列化流:ObjectInputStream类
构造方法:ObjectInputStream(InputStream in)
特有方法:void readObject():读取对象
transient瞬态关键字:避免属性序列化
static 修饰的成员变量属于类不属于对象, 所以不能序列化
transient 修饰的成员变量, 不能被序列化
如果对象的某个属性不希望被序列化, 可以使用transient修饰, 这样就不会被对象流写到文件中
注意:
被读写的对象的类, 必须实现 java.io.Serializable 接口, 否则会抛出NotSerializableException
该类的所有属性也都必须是可序列化的. (实现 java.io.Serializable 接口)
如果某个属性不需要序列化, 则需要用 transient 修饰为瞬态的
如果要将集合序列化, 那么集合中存储的对象也必须是可序列化的
打印流PrintStream
PrintStream特点:
1. 只有输出流, 没有输入流
2. PrintStream永远不会抛出IOException
3. 有特殊方法 print(), println(), 可以输出任意类型的值
java.io.PrintStream类: 字节打印流
构造方法:
[Java] 纯文本查看 复制代码
PrintStream(File file): 创建字节打印流, 输出到一个文件
PrintStream(OutputStream out): 创建字节打印流, 输出到一个字节输出流
PrintStream(String fileName): 创建字节打印流, 输出到一个文件路径
注意事项:
如果用 write() 方法, 会查编码表
如果用 print(), println(), 则原样输出