理解Java的IO 流

2023-11-18

按照流的流向来分,可以分为输入流和输出流:

  • 输入流:只能从中读取数据,而不能向其中写数据.
  • 输出流:只能向其写出数据,而不能从中读取数据

.

对于上面的左图来说,数据从内存到硬盘,通常我们称为输出流,也就是说,这里的输出,都是从程序运行所在的内存角度来划分的。对于右边的这张图来说,数据从服务器通过网路流向客户端,Server的内存负责将数据输出到网络里,因此Server端的程序使用的是输出流,Client端的内存负责从网路里读取数据,因此Client端的程序应该使用输入流.

Java中的输入流 主要由InputStream 和Reader作为基类,而输出流主要由OutputStream和Writer作为基类。

 

字节流和字符流 
字节流和字符流所操作的数据单元不同:字节流操作的最小数据单元是8位的字节 (也是byte类型数据),而字符流操作的最小数据单元是16位的字符  (java使用16位的Unicode编码级作为编码方式)

字节流主要由InputStream 和OutputStream作为基类,而字符流主要由Reader和Writer作为基类。

节点流和处理流

节点流:可以从一个特定的IO设备(如磁盘、网路)读/写数据的流,成为节点流,节点流通常也被成为低级流;使用节点流进行输入输出时 ,程序直接连接到实际的数据源,和实际的输入、输出节点连接.下图显示了节点流的示意图:

处理流:对一个已存在的流进行连接或封装,通过封装后的流来实现数据的读写功能.处理流也成为高级流.使用处理流的一个明显好处就是:只要使用相同的处理流,程序就可以采用完全相同的输入、输出代码来访问不同的数据源,随着处理流所包装节点流的改变,程序实际所访问的数据源也相应发生改变.下图示范了处理流的过程.

 

以上是关于IO流的一些基本情况的说明,理解上面的知识,对继续学习IO流,起着至关重要的作用,不然你到后面会晕的.

 

 

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

理解Java的IO 流 的相关文章

随机推荐

  • IT项目管理的实例与总结

    IT项目管理的实例与总结 Introduction Group Charter 人力资源规划 Project Scope Statement 项目进度计划与时间表 Cost Estimate 质量管理计划 风险管理计划 Microsoft
  • YOLO v7

    文章目录 YOLO v7 一 结构更新 VoVNet CSPVoVNet ELAN RepVGG auxiliary heads SimOTA 二 Loss更新 coarse to find auxiliary loss 三 Others
  • kafka常用命令

    启动zookeeper bin zookeeper server start sh config zookeeper properties 启动kafka bin kafka server start sh config server pr
  • QT时间日期定时器类(5.时间获取转换与排序)【QT基础入门 Demo篇】

    一 QT获取当前时间的方法 二 QString和QDateTime之间的相互转换 三 日期排序 获取时间最值 四 QT延时操作 一 QT获取当前时间的方法 1 使用QDateTime类
  • 解决vscode各种异常格式化编译器配置

    在vscode中创建vue文件时 若编辑代码时会出现间隔一段时间后自动的格式化内容 会很烦 经反复改查后无果 后来 对编辑器进行全面配置 首先原setting json文件中的代码是这样的 files autoSave afterDelay
  • 深度学习踩坑系列之十 创建&克隆&激活虚拟环境

    创建虚拟环境 conda create n your env name python 3 6 2 pip numpy matplotlib pandas sortedcontainers conda克隆虚拟环境 conda create n
  • 蓝桥杯 辗转相除法---求最大公约数

    1 例子 例如 求 319 377 319 377 0 余319 319 377 377 319 377 319 1 余58 377 319 319 58 319 58 5 余29 319 58 58 29 58 29 2 余0 58 29
  • Windows Server 2019 会话远程桌面-快速部署(RemoteApp)

    目录 一 实验要求 二 搭建远程桌面服务RDS 三 需要软件安装 1 安装Firefox 浏览器 2 安装一款视频播放器 3 安装WPS office 套件 四 发布应用 1 发布Firefox 浏览器 2 发布一款视频播放器 3 发布WP
  • pyodbc操作Access数据库

    现在各种各样的数据库层出不穷 什么MySQL PostgreSQL MongoDB这些都是比较火的 还有一些稍微小众一点的数据库就更多了 相比之下 微软Office套件里面附带的Access数据库究落寞了很多 不过好歹Access数据库还是
  • 【图像处理】图像二值化----otsu(最大类间方差法、大津算法)

    转载 https blog csdn net abcjennifer article details 6671288 最大类间方差法是由日本学者大津于1979年提出的 是一种自适应的阈值确定的方法 又叫大津法 简称OTSU 它是按图像的灰度
  • Bicubic Interpolation (双三次插值)

    在Wikipedia http en wikipedia org wiki Bicubic interpolation 上找到了bicubic的描述 不过它只给出了知道导数情况下的公式 后来在CSDN上找到了C语言的算法描述 http to
  • k8s-node节点未找到flannel网络

    k8s node节点的flannel的IP地址不正确 问题描述 问题分析 1 检查node节点的cni和flannel网卡地址 2 检查master节点的flannel服务 如何重置flannel网络 1 删除node节点 master 2
  • unity中Input.Touch详解

    相关的api 1 Touch类 用来记录一个手指触摸在屏幕上的状态与位置的各种相关数据 这其它中只有两个属性是你要注意的 就是Touch fingerId和Touch tapCount Touch fingerId 一个Touch的标识 I
  • Linux常用压缩命令(tar,tgz,gzip,zip,rar)

    Linux常用于压缩和解压tar tgz gzip zip rar 一 tar 1 压缩命令 tar cvf examples tar files dir files dir表示要压缩文件或者目录 说明 c create create a
  • llama.cpp试用

    显存占用是真的低 13B vicuna int4量化 example chat 13B sh 正常问答交流 不到2G的占用 相比之下 vicuna7B原版int8量化 8G显卡下 cuda会OOM 原版不支持int4量化 chatglm6B
  • Android应用底部导航栏(选项卡)实例

    现在很多android的应用都采用底部导航栏的功能 这样可以使得用户在使用过程中随意切换不同的页面 现在我采用TabHost组件来自定义一个底部的导航栏的功能 我们先看下该demo实例的框架图 其中各个类的作用以及资源文件就不详细解释了 还
  • Denoising diffusion implicit models 阅读笔记

    Denoising diffusion probabilistic models DDPMs 从马尔科夫链中采样生成样本 需要迭代多次 速度较慢 Denoising diffusion implicit models DDIMs 的提出是为
  • 其他需要整理

    1 Kinect OpenNI学习笔记之6 获取人体骨架并在Qt中显示 http www cnblogs com tornadomeet archive 2012 10 03 2710737 html
  • 人脸识别产品相关知识整理

    引言 这个文章是我18年初整理的一个基础人脸识别产品知识 人脸识别规范 标准和白皮书 我在工标网站上找到了公安部的 GA T 1093 2013 出入口控制人脸识别系统技术要求 和 GA T 1126 2013 近红外人脸识别设备技术要求
  • 理解Java的IO 流

    按照流的流向来分 可以分为输入流和输出流 输入流 只能从中读取数据 而不能向其中写数据 输出流 只能向其写出数据 而不能从中读取数据 对于上面的左图来说 数据从内存到硬盘 通常我们称为输出流 也就是说 这里的输出 都是从程序运行所在的内存角