编程开发 > JAVA > 文章内容

java基础知识总结(137)

2016-9-19编辑:ljnbset

1、区分:读   写

2、常用流

    文件流:(读写文件)

       FileInputStream/FileOutputStream

    数据流:(读写int,double,String)

       DataInputStream/DataOutputStream

    逐行读写流:(逐行读写文本信息)

      BufferedReader/PrintStream(PrintWriter)

    转换流:(字节流和字符流没有任何关系,必须通过转换流) 

     InputStreamReader    OutputStreamWriter

    对象流:(读写任意的对象)

  ObjectInputStream/ObjectOutputStream

3、编码/解码  什么叫做编码,什么叫做解码?

内存----》显示    编码

编码   unicode----》gbk,gb2312,utf-8  一般输出

ImageIODemo <用这个提问 读 写   编码  解码>

文件---》内存    内存----》文件

//将内存image对象写入到文件中, 就需要编码/序列列化

CardsIODemo:

      1、创建扑克牌 (内存中)

      2、随机排列后写入文件   输入还是输出?

      OutputStream out = new FileOutputStream(file);

      DataOutputStream dos = new DataOutputStream(out);

   3、 将文件cards.dat 读取为Card的集合others   read  or  write

 DataInputStream dis =

      new DataInputStream(

          new BufferedInputStream(//增加输入缓冲流,自动处理缓冲

              new FileInputStream(file)));

浅层复制   深层复制  (看图片)

CharEncodingDemo  

    String str = "ABCDE中国";写出到文件中,需要  编码  or  解码?

    用不同的编码写到文件里,从文件里读出来

    将16位unicode char序列编码为 byte序列, 使用编码方案

    utf-16be 2个字节

    UTF-8  英文1个字节   中文三个字节 

    /GBK 中文本地编码, 中国标准支持全部中国字符(20000+)

    //采用变长编码: 1~2字节 其中英文是1字节, 中文2字节

    //GBK不能支持全部国际字符, unicode 到GBK是码表转换实现

    //GB2312 是 GBK 子集, GB2312 支持6000+常用汉字

    // 中:    4e2d

    // GBK:   d6 d0

    // GB2312:d6 d0

    // 玥  喆  镕 發

      byte[] gbk = str.getBytes("GBK");//unicode编码为GBK

  乱码问题是每个程序员都会遇到的问题,这块要弄明白,以后就不会被乱码问题困扰了

InputStreamReaderDemo   会从基本byte流读取数据并解码为char字符 

       InputStream in = new FileInputStream(file);

           InputStreamReader reader=new InputStreamReader(in,"UTF-8")

BufferedReaderDemo

         //    InputStream is = new FileInputStream(file);

         //    InputStreamReader reader=new InputStreamReader(is,"gbk");

         //    BufferedReader in = new BufferedReader(reader);

OutputStreamWriterDemo

 * OutputStreamWriter 也是一个流功能扩展, 依赖于OutputStream

 * OutputStreamWriter 提供了write(int) 方法, 参数的低16位数据

 * (char 数据) 进行编码, 编码为byte序列, 写入到 OutputStream

 * OutputStream 的write(byte) 写出一byte, 是int的低八位

 * OutputStreamWriter 的write(char)编码char为byte写出到底层流

 PrintWriterDemo 

      PrintWriter out = new PrintWriter(

        new OutputStreamWriter(

            new BufferedOutputStream(

                new FileOutputStream(file)), "utf-8"));

java基础知识总结(136)

热点推荐

登录注册
触屏版电脑版网站地图