技术博客—IO流部分

来源:互联网 发布:网络诈骗罪的量刑标准 编辑:程序博客网 时间:2024/05/23 11:06
 

技术博客—IO流部分:

 

今日学习要点:

一、转换流;

二、流的基本操作;

三、对象的序列化;

四、随机文件的操作;

 

1、Reader  ---InputStreamReader,文件输入流,专门读取字符流的对象文件!

Writer ---OutputStreamWriter 文件输出流,专门同于处理字符流的文件。

 

Reader 和writer 是字符流和字节文件转换的桥梁,

而且在装换过程中还能进行指定的编码转换!

构造函数:

   InputStreamReader(InputStream):通过该构造函数初始化,使用的是本系统默认的编码表GBK。

   InputStreamReader(InputStream,String charSet):通过该构造函数初始化,可以指定编码表。

 

   OutputStreamWriter(OutputStream):通过该构造函数初始化,使用的是本系统默认的编码表GBK。

   OutputStreamWriter(OutputStream,String charSet):通过该构造函数初始化,可以指定编码表。

 

FileReader fr = new FileReader("a.txt");//操作a.txt的中的数据使用的本系统默认的GBK。

 

 

//很重要的一个东西,

既然是数据汇,那么一定是输出流,可以用的OutputStream,Writer。

      往文件中存储的都是文本数据,那么可以使用字符流较为方便:Writer.

      因为操作的是一个文件。所以使用Writer中的FileWriter。

      是否要提高效率呢?是,那就使用BufferedWriter.

 

//String charSet = System.getProperty("file.encoding");

String charSet = "utf-8";

BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new

FileOutputStream("a.txt"),charSet);

 

对象的序列化

ObjectInputStream

ObjectOutputStream

 

可以通过这两个流对象直接操作已有对象并将对象进行本地持久化存储。

存储后的对象可以进行网络传输。

 

   两个对象的特有方法:

   ObjectInputStream

      Object readObject():该方法抛出异常:ClassNotFountException。

   ObjectOutputStream

      void writeObject(Object):被写入的对象必须实现一个接口:Serializable

              否则会抛出:NotSerializableException

 

 

   Serializable:该接口其实就是一个没有方法的标记接口。

        用于给类指定一个UID。该UID是通过类中的可序列化成员的数字签名运算出来的一个long型的值。

        只要是这些成员没有变化,那么该值每次运算都一样。

 

        该值用于判断被序列化的对象和类文件是否兼容。

     

        如果被序列化的对象需要被不同的类版本所兼容。可以在类中自定义UID。

        定义方式:static final long serialVersionUID = 42L;

  

   注意:对应静态的成员变量,不会被序列化。

      对应非静态也不想被序列化的成员而言,可以通过transient关键字修饰。

 

   通常,这两个对象成对使用。

 

 

原创粉丝点击