Java IO流分析整理

2023-10-28

Java中的流,可以从不同的角度进行分类。

按照数据流的方向不同可以分为:输入流和输出流。

按照处理数据单位不同可以分为:字节流和字符流。

按照实现功能不同可以分为:节点流和处理流。

 

输出流:

 

输入流:

因此输入和输出都是从程序的角度来说的。

字节流:一次读入或读出是8位二进制。

字符流:一次读入或读出是16位二进制。

字节流和字符流的原理是相同的,只不过处理的单位不同而已。后缀是Stream是字节流,而后缀是ReaderWriter是字符流。

 

节点流:直接与数据源相连,读入或读出。

直接使用节点流,读写不方便,为了更快的读写文件,才有了处理流。

处理流:与节点流一块使用,在节点流的基础上,再套接一层,套接在节点流上的就是处理流。

Jdk提供的流继承了四大类:InputStream(字节输入流)OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)。

以下是javaio中常用的流。

 

字节输入流:

字节输出流:

字符输入流:

字符输出流:

简单介绍其上图:

对文件进行操作:FileInputStream(字节输入流),FileOutputStream(字节输出流),FileReader(字符输入流),FileWriter(字符输出流)

对管道进行操作:PipedInputStream(字节输入流),PipedOutStream(字节输出流),PipedReader(字符输入流),PipedWriter(字符输出流)

PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。

字节/字符数组:ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter是在内存中开辟了一个字节或字符数组。

Buffered缓冲流::BufferedInputStreamBufferedOutputStreamBufferedReader,BufferedWriter,是带缓冲区的处理流,缓冲区的作用的主要目的是:避免每次和硬盘打交道,提高数据访问的效率。

转化流:InputStreamReader/OutputStreamWriter,把字节转化成字符。

数据流:DataInputStreamDataOutputStream

因为平时若是我们输出一个8个字节的long类型或4个字节的float类型,那怎么办呢?可以一个字节一个字节输出,也可以把转换成字符串输出,但是这样转换费时间,若是直接输出该多好啊,因此这个数据流就解决了我们输出数据类型的困难。数据流可以直接输出float类型或long类型,提高了数据读写的效率。

打印流:printStreamprintWriter,一般是打印到控制台,可以进行控制打印的地方。

对象流:ObjectInputStreamObjectOutputStream,把封装的对象直接输出,而不是一个个在转换成字符串再输出。

序列化流:SequenceInputStream

对象序列化:把对象直接转换成二进制,写入介质中。

使用对象流需要实现Serializable接口,否则会报错。而若用transient关键字修饰成员变量,不写入该成员变量,若是引用类型的成员变量为null,值类型的成员变量为0.

文章转自:http://blog.csdn.net/yuebinghaoyuan/article/details/7388059

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java IO流分析整理 的相关文章

随机推荐

  • 利用Hexo在Github上部署个人博客

    利用Hexo在GitHub上部署个人博客 1 前言 1 1准备 2 开始 2 1在GitHub上创建仓库 2 2 搭建Hexo并将个人博客部署至Github 2 2 1利用npm安装cnpm 2 2 2 安装并部署Hexo 2 2 3 将个
  • 【解决WARNING报错】WARNING: You are using pip version 21.3.1; however, version 22.0.3 is available.

    比如我在下载PIL模块的时候出现了一下的报错 这个报错是什么原因呢 它其实是提示你你解释器里面的pip 的版本呢已经不能够支持下载该模块了 如果你想下载该模块的话就需要进行pip版本的更新了 那么怎么进行pip版本的更新呢 在WARNING
  • CentOS8网络配置

    CentOS8网络配置 CentOS8已无法正常使用network服务 root localhost systemctl status network Unit network service could not be found root
  • MixFormer学习笔记

    MixFormer End to End Tracking with Iterative Mixed Attention 动机 视觉对象跟踪通常采用特征提取 目标信息集成和边界框估计的多阶段管道 为了简化这一流程 并统一特征提取和目标信息集
  • 关于Qt中的paintEvent事件

    以下均来自与Qt文档 未作任何更改 void QWidget paintEvent QPaintEvent event This event handler can be reimplemented in a subclass to rec
  • js文件引入其他js文件

    function loadJavaScript url success let domScript document createElement script domScript src url success success functi
  • mysql之标识列20

    1 标识列 标识列实际上就是对自动增长概念的讲述 非常简单 只需要理解下面的四个特点即可 标识列 又称为自增长列 含义 可以不用手动的插入值 系统提供默认的序列值 特点 1 标识列必须和主键搭配吗 不一定 但要求是一个key 例如主键 唯一
  • Spark On YARN内存和CPU分配

    软件版本 CDH 5 7 2 JDK 1 7 问题描述 在使用Spark On YARN时 无论是Client模式或者是Cluster模式 当然下面会有这种模式的对比区别 可以添加诸如 plain view plain copy execu
  • 令人头疼的数据输入,认识数据 输入输出

    博客主页 小王又困了 系列专栏 C语言 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 用scanf函数输入数据 1 printf函数和scanf函数的一般形式 2 格式字符 二 使用scanf函数应该注意的问题 三 字符输入输
  • C++学习(四七七)glsl es使用总结 特点 不同

    1 不支持接口块 Interface Blocks out VS OUT vec2 TexCoords vs out GLSL ES Specification 3 00 pdf中
  • ajax三种错误ie,ie下jquery ajax 80020101错误的解决方法

    注意注释 删除这些注释就可以了 Windows下一个MySQL有些错误的解决方法 1 无论是什么提示 我们有一个直接看错误日志 由于它描述了最具体描述错误日志 于MySQL安装文件夹中找到 my ini简介 看日志保存路径 2 我的错误是
  • Linux——信号及其使用

    信号的基本概念 信号是系统响应某个条件而产生的事件 进程接受到信号会执行相应的操作 软中断信号 用来通知进程发生了异步事件 信号是进程间通信机制中唯一的异步通信机制 一个进程不必通过任何操作来等待信号的到达 系统预先定义好的某些特定事件 信
  • 异构网络的理解

    异构网络 Heterogeneous Network 是一种类型的网络 其是由不同制造商生产的计算机 网络设备 和系统组成的 大部分情况下运行在不同的协议上支持不同的功能或应用 图1 给出了一种异构网络模型 不同类型的网络 通过网关连接到核
  • python 按自己的理解尝试实现fn算法

    贪心算法FN具体步骤如下所述 1 去掉网络中所有的边 网络的每个节点都单独作为一个社区 2 网络中的每个连通部分作为一个社区 将还未加入网络的边分别重新加回网络 如果加入网络的边连接了两个不同的社区 即合并了两个社区 则计算形成的新的社区划
  • 【计算机组成原理笔记】1.2计算机的基本组成

    1 2计算机的基本组成 冯 诺依曼计算机 冯诺依曼计算机的六个特点 冯 诺依曼计算机硬件框图 各部分功能 缺点 计算机硬件框图 以存储器为中心的计算机硬件框图 现代计算机硬件框图 系统复杂性管理方法 计算机的工作步骤 指令格式举例 存储器的
  • Java 核心机制

    Java 核心机制 Java 虚拟机 Java Virtual Machine 简称 JVM 垃圾收集机制 Garbage collection 简称 GC 垃圾收集的目的在移除不再使用的对象 当对象建立的时候垃圾收集期 就开始监控对象的动
  • 图片相相似度计算(Hash、SSIM、compareHist)

    哈希相似度算法 Hash algorithm 用一个快速算法 就达到基本的效果 哈希算法 Hash algorithm 它的作用是对每张图片生成一个固定位数的Hash 值 指纹 fingerprint 字符串 然后比较不同图片的指纹 结果越
  • SDH概述

    1 SDH概述 1 1 SDH产生的技术背景 为什么会产生SDH传输体制 在讲SDH传输体制之前 我们首先要搞清楚SDH到底是什么 那么SDH是什么呢 SDH全称叫做同步数字传输体制 由此可见SDH是一种传输的体制 协议 就像PDH 准同步
  • 基于视频图像的火灾检测算法

    要求 视频帧满足R x y gt gt R x y gt 190 gt 100 140 Y x y Cr x y x y Cb x y Y x y gt 通道均值 Cr x y gt 通道均值 Cb x y lt 通道均值条件且满足利用帧差
  • Java IO流分析整理

    Java中的流 可以从不同的角度进行分类 按照数据流的方向不同可以分为 输入流和输出流 按照处理数据单位不同可以分为 字节流和字符流 按照实现功能不同可以分为 节点流和处理流 输出流 输入流 因此输入和输出都是从程序的角度来说的 字节流 一