• java基础3之IO


    流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。

    流的种类

    字符流 = 字节流 + 解码
    还有其他流

    字符流 Reader/Writer

    如果读写的都是 字符数据,这时候我们就使用字符流char数组。 以16位的Unicode码表示的字符为基本单位。
    FileReader/FileWriter:文件字符流,用于文写操作默认是使用的是 gbk 编码本文件的读
    BufferedReader/BufferedWriter:加缓冲区的字符流,用于提高效率(内部其实就是维护了一个 8192 个长度的字符数组)

    字节流 InputStream/OutputStream

    读取到数据 不需要经过编码或者解码的情况情况下这时候使用字节流byte数组。比如:图片数据。
    FileInputStream/FileOutputStream:文件字节流,用于文件的读写操作
    BufferedInputStream/BufferedFileOutputStream:加缓冲区的字节流,用于提高效率(内部其实也是维护了一个 8kb 的字节数组而已)

    其他常用流

    转换流 InputStreamReader/OutputStreamWriter
    包装流ObjectInputStream/ObjectOutputStream

    字符流与字节流之间的转换

    通过byte[]和String来关联。

    1. 字节变字符流(指定解码方法,否则按虚拟机默认的,可能乱码)
      String str = new String(byte[] bytes, String charsetName);
      也可以使用转换流InputStreamReader ,它是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
    2. 字符变字节流
    byte[] data = str.getBytes("UTF-8");```
    字节的解码,与字符的编码要一致
  • 相关阅读:
    windows防火墙失效
    unity_animator_stop_replay(重新播放)
    使用rider做为unity的代码编辑器
    分母为0的坑(float)
    动画或特效不会播放(被裁剪)
    UGUI在两个UI间坐标转换
    informix 查看 当前锁表
    java protected 与默认权限的区别
    Java 定时任务
    在线支付
  • 原文地址:https://www.cnblogs.com/xiaobingzi/p/10629546.html
Copyright © 2020-2023  润新知