InputStreamReader介绍&代码实现,序列化和反序列化的概述
InputStreamReader介绍&代码实现:
java.io.InputstreamReader extends Reader
InputStreamReader:是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。(解码:把看不懂的交成能看懂的)
继承自父类的共性成员方法:
int read()读取单个字符并返回。
int read (char[] cbuf)一次读取多个字符,将字符读入数组。
void close()关团该流并释放与之关联的所有资源。
构造方法:
InputStreamReader(InputStream in)创建一个使用黑认字符集的InputStreamReader。
InputStreamReader(InputStream in,String charsetName)创建使用指定字符集的InputStreamReader。
参数:
Inputstream in :字节输入流,用来读取文件中保存的字节
string charsetName:指定的编码表名称,不区分大小写,可以是utf-8/UTF-8,gbk/GBK,...不指定默认使用UTF-8
使用步骤:
1.创建InputstreamReader对象,构造方法中传递字节输入流和指定的编码表名称
2.使用InputstreamReader对象中的方法read读取文件
3.释放资源
注意事项:
构造方法中指定的编码表名称要和文件的编码相同,否则会发生乱码
public class geshi { public static void main(String[] args) throws IOException { uft(); } /** * 使用InputstreamReader读取UTF-8格式的文件 */ private static void uft() throws IOException { //1.创建InputstreamReader对象,构造方法中传递字节输入流和指定的编码表名称 InputStreamReader reader = new InputStreamReader(new FileInputStream("haihao.txt")); //2.使用InputStreamReader对象中的方法read读取文件 int a =0; while ((a = reader.read()) !=-1){ System.out.println((char) a); } //3.释放资源 reader.close(); } }
序列化和反序列化的概述:
Java提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。
字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。
反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、
对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化: