Java学习笔记(十一):IO流

IO流

一、File类

  • java.io.File类是文件和文件目录的抽象表示,与平台无关,与文件或目录是否存在无关
  • File能新建、删除、重命名文件和目录,但File不能访问文件内容本身,如果要访问需要使用IO流

二、IO流

1.流的分类

  1. 输入流和输出流
  • 输入流基类:InputStreamReader
  • 输出流基类:OutputSteamWriter
  1. 字节流和字符流
  • 字节流操作的数据单元是8位的字节,字符流操作的数据单元是16位的字符
  • 字节流基类:InputSteamOutputStream
  • 字符流基类:ReaderWriter
  1. 节点流和处理流
  • 节点流直接从源或目的地读写数据,处理流包装节点流

2.IO流体系

  • IO流体系
    在这里插入图片描述
  • 在使用处理流包装了底层节点流值后,关闭输入/输出流资源时,只要关闭最上层的处理流即可。关闭最上层处理流时,系统会自动关闭该处理流包装的节点流,关闭流的顺序与打开流的顺序相反
  • 如果进行输入/输出的内容是文本内容,则考虑使用字符流;如果进行输入/输出的内容是二进制内容,则考虑使用字节流
  • 缓冲流可以提高输入、输出的效率,增加缓冲流后,数据会先写到缓冲区中,缓冲区写满后才会一次性写到文件中,需要使用flush()方法才可以将缓冲区的内容写入实际的物理节点,直接使用close()方法会先刷新缓冲区,再关闭流
  • 转换流用于将字节流转换成字符流
  • 打印流用于将基本数据类型的数据格式化为字符串输出
  • 随机存取文件流:RandomAccessFile类支持随机访问的方式,可以直接跳到文件的任意位置来读写文件
  • 对象流用于存储和读取基本类型数据或对象,只有实现了SerializableExternalizable接口的对象才能被序列化
    • 序列化:用ObjectOutputStream保存基本类型数据或对象
    • 反序列化:用ObjectInputStream读取基本类型数据或对象
    • ObjectOutputStreamObjectInputStream不能序列化statictransient修饰的成员变量

三、编码与解码

1.字符编码

  • Unicode只是定义了一个庞大的、全球通用的字符集,并未每个字符规定了唯一确定的编号,具体存储成什么样的字节流,取决于字符编码方案
  • UTF-8就是每次传输8位数据,UTF-16就是每次传输16位数据,ANSI就是平台默认编码
  • 编码:字符编码为字节码 public byte[] getBytes(Charset charset)
  • 解码:字节码解码为字符 public String(byte bytes[], int offset, int length, String charsetName)
  • 乱码的原因:字节码不够编码为一个字符、字符集不统一
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值