当前位置: 首页 > news >正文

Java的IO流

Day35 Java的IO流

概念

Java的IO流是用来处理输入和输出操作的机制,用于在程序和外部数据源(如文件、网络连接、内存等)之间进行数据传输。Java的IO流主要分为字节流和字符流两种类型,每种类型又分为输入流和输出流。

理解

I – in – 输入(读)

O – out – 输出(写)

流 – 一点一点的想水流一样去传输数据

注意:站在程序的角度去看待输入还是输出

好处: Java的IO流提供了丰富的类和方法,可以满足各种输入输出需求。在使用IO流时,需要注意异常处理、资源释放等问题,以确保程序的稳定性和性能。

分类

按照方向分流:输入流、输出流

按照单位分流:字节流、字符流

字节流(Byte Streams)

  • InputStream:用于从输入源读取字节数据的抽象类。
  • OutputStream:用于向输出目标写入字节数据的抽象类。
  • FileInputStream:从文件中读取数据的输入流。
  • FileOutputStream:向文件中写入数据的输出流。
  • BufferedInputStream:带缓冲区的输入流,提高读取效率。
  • BufferedOutputStream:带缓冲区的输出流,提高写入效率。

字符流(Character Streams)

  • Reader:用于从输入源读取字符数据的抽象类。
  • Writer:用于向输出目标写入字符数据的抽象类。
  • FileReader:从文件中读取字符数据的输入流。
  • FileWriter:向文件中写入字符数据的输出流。
  • BufferedReader:带缓冲区的字符输入流,提高读取效率。
  • BufferedWriter:带缓冲区的字符输出流,提高写入效率。

按照功能分流:基础流/节点流、处理流

注意:new 处理流(new 基础流) – 装饰者模型 – 处理流对象中往往包含了基础流的对象,在基础流的基础上拓展了额外的功能,使得流更为强大(效率),工作中一般使用处理流

常用操作

  1. 读取数据:通过输入流读取数据,可以逐字节或逐行读取。
  2. 写入数据:通过输出流写入数据,可以逐字节或逐行写入。
  3. 缓冲操作:使用缓冲流可以提高IO操作的效率。
  4. 关闭流:及时关闭流以释放资源,可以使用try-with-resources语句简化关闭操作。

存储单位

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

1024TB = 1PB

注意:进制1024

学习注意事项

  1. 按照流的发展历史去学习
  2. 注意流与流之间的继承关系
  3. 举一反三

字节流

应用场景:操作二进制数据(音频、视频、图片)

abstract class InputStream – 字节输入流的基类(抽象类)

abstract class OutputStream – 字节输出流的基类(抽象类)

class FileInputStream extends InputStream – 文件字节输入流

class FileOutputStream extends OutputStream – 文件字节输出流

class FilterInputStream extends InputStream – 过滤器字节输入流

class FilterOutputStream extends OutputStream – 过滤器字节输出流

class BufferedInputStream extends FilterInputStream – 带缓冲区的字节输入流

class BufferedOutputStream extends FilterOutputStream – 带缓冲区的字节输出流

默认缓冲区大小:8192字节

字符流

应用场景:操作纯文本数据

注意:字符流 = 字节流+编译器

编译器:可以识别中文字符和非中文字符,非中文字符获取1个字节(一个字节=一个字符),编译器会根据编码格式获取中文字符对应的字节数(GBK获取两个字节,UTF-8获取三个字节)

abstract class Reader – 字符输入流的基类(抽象类)

abstract class Writer – 字符输出流的基类(抽象类)

class InputStreamReader extends Reader – 字符输入转换流

class OutputStreamWriter extends Writer – 字符输出转换流

特点:将字节流转换为字符流,字符转换流是字节流和字符流的桥梁

class FileReader extends InputStreamReader – 文件字符输入流

class FileWriter extends OutputStreamWriter – 文件字符输出流

各种流

对象流

内存流

打印流

随机访问流

http://www.lryc.cn/news/340769.html

相关文章:

  • Node.js 中的 RSA 加密、解密、签名与验证详解
  • vue+element作用域插槽
  • MUSA模型
  • avicat连接异常,错误编号2059-authentication plugin…
  • 阿里云云效CI/CD配置
  • 个人开发者,Spring Boot 项目如何部署
  • 【Spring进阶系列丨第九篇】基于XML的面向切面编程(AOP)详解
  • 学习记录:转发和重定向
  • 实现(图像、视频等)数据上云存储
  • LeetCode 454.四数相加II
  • GoogleNet网络训练集和测试集搭建
  • 将数字状态码在后台转换为中文状态
  • 2017NOIP普及组真题 4. 跳房子
  • 网络与 Internet因特网的基本概念
  • vue-router 中 router-link 与 a 标签的区别
  • MySQL基础知识——MySQL事务
  • 【架构方法论(一)】架构的定义与架构要解决的问题
  • 基于springboot实现人口老龄化社区服务与管理系统项目【项目源码+论文说明】计算机毕业设计
  • 代码随想录算法训练营第三十七天| LeetCode 738.单调递增的数字、总结
  • C++动态内存管理 解剖new/delete详细讲解(operator new,operator delete)
  • python-re正则笔记0.2.0
  • .NET SignalR Redis实时Web应用
  • 【热门话题】常见分类算法解析
  • 有效利用MRP能为中小企业带来什么?
  • InternlM2
  • 2024-12.python高级语法
  • 【C语言】贪吃蛇项目(1) - 部分Win32 API详解 及 贪吃蛇项目思路
  • 秋叶Stable diffusion的创世工具安装-带安装包链接
  • 华为ensp中aaa(3a)实现telnet远程连接认证配置命令
  • 前端网络---http协议和https协议的区别