BufferedInputStream类(缓冲字节输入流)
* 类的特点
* 针对另外一个字节输入流添加缓冲区使之具有高效读取功能的工具类
* 类的位置
* java.io
* 类的构造器
* public BufferedInputStream(InputStream in)
* 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
* 类的方法
* 详见文件字节输入流方法
*
*
* BufferedOutputStream类(缓冲字节输入流)
* 类的特点
* 针对另外一个字节输出流添加缓冲区使之具有高效写入功能的工具类
* 类的位置
* java.io
* 类的构造器
* public BufferedOutputStream(OutputStream out)
* 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
* 类的方法
* 详见文件字节输出流方法
BufferedReader类(缓冲字符输入流)
* 类的特点
* 针对另外一个字符输入流添加缓冲区使之具有高效读取功能的工具类
* 类的位置
* java.io
* 类的构造器
* public BufferedReader(Reader in)
* 创建一个使用默认大小输入缓冲区的缓冲字符输入流。
* 类的方法
* public String readLine()
* 读取一个文本行。
BufferedWriter类(缓冲字符输出流)
* 类的特点
* 针对另外一个字符输出流添加缓冲区使之具有高效写入功能的工具类
* 类的位置
* java.io
* 类的构造器
* public BufferedWriter(Writer out)
* 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
* 类的方法
* public void newLine()
* 写入一个行分隔符。
IO流的关闭规则:
* 1.先开后关,后开先关
* 2.IO流的关闭资源建议写在finally代码块中或者JDK7.0新try...catch语法中
文件字节流的优势:
* 适用于进行图片,视频,音频等
*
* 文件字节流的弊端:
* 操作文件(编码)==>字节(解码)==>写入(编码)==>使用文件(解码)
* 编码和解码的过程中出现了数据的转换问题,可能出现乱码情况
*
* 文件字符流目的
* 在读写文本文件时,涉及中文字符不进行中文和字节的转换
FileReader类(文件字符输入流)
* 类的特点
* 针对文件以字符为单位进行读取操作的工具类
* 类的位置
* java.io
* 类的构造器
* public FileReader(File file)
* 在给定从中读取数据的 File 的情况下创建一个新 FileReader
* public FileReader(String fileName)
* 在给定从中读取数据的文件名的情况下创建一个新 FileReader。
* 类的方法
* public void close()
* 闭该流并释放与之关联的所有资源。
* public int read()
* 读取单个字符。
* public int read(char[] cbuf)
* 将字符读入数组
FileWriter类(文件字符输出流)
* 类的特点
* 针对文件以字符为单位进行写入操作的工具类
* 类的位置
* java.io
* 类的构造器
* public FileWriter(File file)
* 根据给定的 File 对象构造一个 FileWriter 对象。
* public FileWriter(File file,boolean append)
* 根据给定的 File 对象构造一个 FileWriter 对象。
* public FileWriter(String fileName)
* 根据给定的文件名构造一个 FileWriter 对象。
* public FileWriter(String fileName,boolean append)
* 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
* 类的方法
* public void close()
* 关闭此流,但要先刷新它。
* public void write(int c)
* 写入单个字符。
* public void write(char[] cbuf)
* 写入字符数组。
* public void write(char[] cbuf,int off,int len)
* 写入字符数组的某一部分。
* public void write(String str)
* 写入字符串。
* public void write(String str,int off,int len)
* 写入字符串的某一部分。
* public void flush()
* 刷新该流的缓冲。
*
* 文件字符输出流注意事项:
* close():关闭并刷新,关闭流后不能再进行使用
* flush():刷新该流,将内存缓冲区中的写入内容写入到指定文件中,后续可以继续使用该流
ObjectOutputStream类(对象输出流,序列化过程)
* 类的特点
* 针对对象和基本数据类型进行输出的字节流工具类
* 类的位置
* java.io
* 类的构造器
* public ObjectOutputStream(OutputStream out)
* 创建写入指定 OutputStream 的 ObjectOutputStream。
* 类的方法
* public final void writeObject(Object obj)
* 将指定的对象写入 ObjectOutputStream。
*
* Serializable接口
* 接口的特点
* 类通过实现 java.io.Serializable 接口以启用其序列化功能
* 接口的位置
* java.io
* 接口的方法
* 没有方法
ObjectInputStream类(对象输入流,反序列化)
* 类的特点
* ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化
* 类的位置
* java.io
* 类的构造器
* public ObjectInputStream(InputStream in)
* 创建从指定 InputStream 读取的 ObjectInputStream。
* 类的方法
* public final Object readObject()
* 从 ObjectInputStream 读取对象
对象流的注意事项:
* 1.实现序列化操作,必须让对象所对应的类实现Serializable,否则会发生NotSerializableException
* 2.如果需要通过序列化操作多个对象,需要将多个对象存储"集合容器"中,在序列化和反序列化过程中尽量操作一个序列化对象
* 3.在实现序列化和反序列化过程中,针对序列化类不能做任何修改
* 4.在实现序列化和反序列化过程中,针对序列化文件不能做任何修改
* 5.在实现序列化和反序列化过程中,如果对象的某些属性不需要实现序列化操作,可以transient关键字进行修饰符
* transient关键字:
* 含义:
* 瞬态的
* 作用:
* 被transient关键字修饰的属性不可以被序列化
* 格式:
* 修饰符 transient 数据类型 变量名;
* 字符集:
* 含义:十进制数字和字符进行一一对应的码表
* 常见:
* ASCII字符集
* Unicode字符集
* GB字符集
* ISO-8859字符集
*
* 字符编码:
* 含义:以某种存储规则将存储字节和字符进行转换关系
* 常见:
* ASCII字符集:
* ASCII-128字符编码
* ASCII-256字符编码
* Unicode字符集
* UTF-8字符编码
* UTF-16字符编码
* UTF-32字符编码
* GB字符集
* GB2312字符编码
* GBK字符编码
* GB18030字符编码
* ISO-8859字符集
* ISO-8859-1字符编码
* ISO-8859-2字符编码
* ......
转换流的学习目的
* 在进行编码或者解码的过程中可以指定编码或解码的方式
InputStreamReader类(转换输入流)
* 类的特点
* InputStreamReader 是字节流通向字符流的桥梁
* 类的位置
* java.io
* 类的构造器
* public InputStreamReader(InputStream in)
* 创建一个使用默认字符集的 InputStreamReader。
* public InputStreamReader(InputStream in,String charsetName)
* 创建使用指定字符集的 InputStreamReader。
* 类的方法
* 详见文件字符输入流方法
*
* OutputStreamWriter类(转换输出流)
* 类的特点
* OutputStreamWriter 是字符流通向字节流的桥梁:
* 类的位置
* java.io
* 类的构造器
* public OutputStreamWriter(OutputStream out)
* 创建使用默认字符编码的 OutputStreamWriter。
* public OutputStreamWriter(OutputStream out,String charsetName)
* 创建使用指定字符集的 OutputStreamWriter。
* 类的特点
* 详见文件字符输出流方法
*
* 场景1:
* 服务端为utf8开发环境,用户上传utf8编码文本,通过服务器解析以utf8编码进行保存
* 场景2:
* 服务端为utf8开发环境,用户上传gbk编码文本,通过服务器解析以utf8编码进行保存
* 场景3:
* 服务端为utf8开发环境,用户上传utf8编码文本,通过服务器解析以gbk编码进行保存
* 场景4:
* 服务端为utf8开发环境,用户上传gbk编码文本,通过服务器解析以gbk编码进行保存
标准输入流
* System.in
* 标准输出流
* System.out
PrintStream类
* 类的特点
* 针对各种类型的数据值进行方法打印操作的工具类
* 类的位置
* java.io
* 类的构造器
* public PrintStream(OutputStream out)
* 创建新的打印流。此流将不会自动刷新。
* public PrintStream(String fileName)
* 创建具有指定文件名称且不带自动行刷新的新打印流。
* 类的方法