• IO流


    绑定IO资源:
    获取文件当前的使用权限
    FileWriter和FileReader是Io流升级的便捷类,不能代表IO流

    数据就是二进制数
    同样的二进制数据,被不同软件通过规则翻译成不同形式的数据显示出来,其本质一直都是二进制数字

    OutputStream:字节输出流的根类,定义了所有字节输出流应该具备的方法
    close()    解绑IO资源(关闭IO流)

    我们输入的各种类型的数据,最后都是由虚拟机或者java程序修改过的,其实输入的是二进制数字,然后输出的时候再变回我们的数据,这是为了方便java程序员,简单说就是,数据就是二进制

    字符流:以字符为单位操作的操作流

    InputStreamReader:将字节流输入转换成字符流输入
    OutputStreamWriter:将字节流输出转换成字符流输出

    FileInputStream是字节流,InputStreamReader是字节流
    为什么要转换:
    字节流读取的是一个个字节,如果是中文(两个字节)的话就会将中文拆成两个字节,结果是输不出中文的,而字符流读取的时候是按照编码表来读取的(字符 = 字节 + 编码表),所以能直接读取中文
    将字节流(FileInputStream)转换成字符流(InputStreamReader)的方法是将字节流对象传入到字符流的构造方法中
    FileInputStream fis = new FileInputStream(路径);
    InputStreamReader isr = new InputStreamReader(fis);
    或者
    InputStreamReader isr = new InputStreamReader(new FileInputStream(路径));


    常用编码表:
    >ASCII:
    >GBK:国标码,中文环境编码常用(2个字节一个汉字)
    >GB2112:
    >UTF-8:万国码(国际化码表)(3个字节一个汉字)
    >ISO8859-1:拉丁码表
    >BIG-5:繁体字码表
    英文无论什么时候都是ASCII码表

    当字节与字符转换的时候用的码表不同的时候就会出现乱码问题
    用A码表将字符转换成字节,又用B码表将字符转换成字节,两个码表关系不同就查到了不同的结果

    保证不乱码的方式:编码与解码保持相同
    中后期,所有的码表都是utf-8

    fos  oos
    将对象永久性的保存在一个文件中,叫做序列化,读取叫反序列化
    步骤:
    1.准备被序列化的对象
    2.创建序列化流对象
    3.序列化对象
    4.关闭流
    普通类下需要实现序列化接口,开启其序列化功能(Serializable,这个接口没有方法,只是一个标记,用来标记这个类是否需要序列化的)

    反序列化:如果是需要使用被序列化的类,那么这个类会自动的生成一个SerialVersonUID,如果类发生了改变而ID没有改变则会报错,如果是自己指定出来了这个UID,则不会报错,如果是指定了UID之后改变了类则不会报错(注意)。

    打印流:
    PrintStream和PrintWriter
    都需要创建一个输出字节流FileOutputStream


    Java中的字符串默认使用的是本地编码方式(ANSI)(GBK)


    转换编码的方式:
    1.将字符串转换成字节数组并调用getBytes(编码格式)然后再把字节转换成字符(字符串)
    2.将字节流转换成字符流,字节流转字符流的类OutputStreamWriter(Reader)的构造方法里有设定编码格式的方法

  • 相关阅读:
    如何规避javascript多人开发函数重名问题
    用纯css创建一个三角形
    什么是语义化的HTML
    什么是AJAX?AJAX的原理
    call()和apply()的认知
    经常遇到的浏览器的兼容性有哪些?原因?解决方法是什么?
    为什么要清除浮动,有哪些方式
    常用浏览器的内核分别是什么
    【托业】【怪兽】TEST02
    【托业】【怪兽】TEST04
  • 原文地址:https://www.cnblogs.com/Yuanpp/p/8445753.html
Copyright © 2020-2023  润新知