io流之打印流和序列化流

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

1:打印流
 (1)打印流的特点:
  A:可以输出任意类型数据
  B:如果启用了自动刷新,在调用println方法的时候会自动刷新
  C:可以直接操作文件
   注意:哪些流对象可以直接操作文件呢?
   看构造,如果同时能够接受String类型和File类型的参数,就可以。

(2)打印流的相关知识

PrintStream和PrintWriter都属于打印流,提供了一系列的print和println方法,可以现将基本数据类型的数据格式转化成字符串输出。PrintStream和PrintWriter的输出操作可能不会抛出IOException异常。
 (3)打印流的使用:
  A:write
  B:print
  C:println
 (3)案例:复制文本文件。

//创建对象

  BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
  PrintWriter pw = new PrintWriter(new FileWriter("d:\\b.txt"),true);

  String line = null;

//一次读写一行
  while((line=br.readLine())!=null)
  {

//此处println方法可以实现自动换行
   pw.println(line);
  }

//关闭流对象

  pw.close();
  br.close();

2:Properties
 (1)是唯一一个可以和IO流结合使用的Map集合。
 (2)特殊功能:
  A:list() 只能使用打印流。把集合中的数据写入到文件中
  B:load() 使用任意输出流。把文件中的键值对数据加载到集合中
  C:store() 使用任意输出流。把集合中的数据写入到文件中

3:序列化流
 (1)序列化:就是把对象按照流一样的方式写入文件(或者在网络中传输。)
    反序列化:就是把文件中的二进制流数据还原成对象
 (2)序列化和反序列化流对象
  A:ObjectOutputStream
   void writeObject(Object obj)
  B:ObjectInputStream
   Object readObject()
 (3)如果你的对象想被序列化流操作?
  A:必须实现序列化接口Serializable(标记性接口,接口中没有方法)

  B:如果想做简单的改动,不出问题,那么就应该给定序列化id值
    这样还可以解决黄色警告问题

4:字符编码
 (1)编码表:把字符和对应的数值存储到一张表格
 (2)常见的编码表:
  ASCII
  ISO-8859-1
  GB2312
  GBK
  GB18030
  BIG5
  UTF-8
 (3)转换流中的编码问题
  字符流 = 字节流 + 编码表
 (4)字符串中的编码问题
  String -- byte[] 编码
  byte[] -- String 解码

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net

你可能感兴趣的:(java,IO,编码,打印流,序列化流)