Java IO原理

 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于
处理设备之间的数据传输。如读/写文件,网络通讯等。
 Java程序中,对于数据的输入/输出操作以 “流(stream)” ” 的
方式进行。
 java.io包下提供了各种“流”类和接口,用以获取不同种类的
数据,并通过 标准的方法输入或输出数据。

 输入input: :读取外部数据(磁
盘、光盘等存储设备的数据)到
程序(内存)中。
 输出output: :将程序(内存)
数据输出到磁盘、光盘等存储设
备中。

 “字符流和字节流的区别:字节流操作的基本单元为字节,字符流操作的基本单元为unicode码元;字节流默认不使用缓冲区,字符流使用缓冲区。”

 IO  流体系

InputStream & Reader
InputStream 和 Reader 是所有 输入流的基类。
InputStream(典型实现:FileInputStream)
int read()
int read(byte[] b)
int read(byte[] b, int off, int len)
Reader(典型实现:FileReader)
int read()
int read(char [] c)
int read(char [] c, int off, int len)
程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资
源,所以应该件 显式关闭文件 IO 资源。
FileInputStream 从文件系统中的某个文件中获得输入字节。FileInputStream
用于读取非文本数据之类的原始字节流。要读取字符流,需要使用 FileReader

InputStream
 int read()
从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因
为已经到达流末尾而没有可用的字节,则返回值 -1。
 int read(byte[] b)
从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。如果因为已
经到达流末尾而没有可用的字节,则返回值 -1。否则以整数形式返回实际读取
的字节数。
 int read(byte[] b, int off,int len)
将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取
的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于
文件末尾而没有可用的字节,则返回值 -1。
 public void close() throws IOException
关闭此输入流并释放与该流关联的所有系统资源。

IO流:原理、流的分类、体系结构的更多相关文章

  1. IO流03_流的分类和概述

    [概述] Java的IO流是实现输入/输出的基础,它可以方便的实现数据的输入/输出操作. Java中把不同的输入/输出源(键盘.文件.网络连接)抽象表述为"流"(Stream). ...

  2. java IO流的概念与分类

    DataInputStream && ObjectInputStream 示例 https://blog.csdn.net/hoho_12/article/details/520543 ...

  3. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

  4. Java 基础 IO流(转换流,缓冲)

    一,前言 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputStr ...

  5. java-IO流-字节流-概述及分类、FileInputStream、FileOutputStream、available()方法、定义小数组、BufferedInputStream、BufferedOutputStream、flush和close方法的区别、流的标准处理异常代码

    1.IO流概述及其分类 * 1.概念      * IO流用来处理设备之间的数据传输      * Java对数据的操作是通过流的方式      * Java用于操作流的类都在IO包中      *  ...

  6. IO流(字节流,字符流,缓冲流)

    一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流   这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图:   二:字符字节 ...

  7. IO流----转换流、缓冲流

    打开一个文本文件,另存为: Ansi就是系统默认编码(就是gbk) 建一个编码是utf-8的txt文件, 例: import java.io.FileWriter; import java.io.IO ...

  8. IO(转换流、缓冲流)

    第1章 转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者Output ...

  9. IO之字符流

    什么是字符流 对于文本文件(.txt .java .c .cpp) 使用字符流处理 注意点 读入的文件一定要存在 否则就会报FileNotFoundException 异常的处理 为了保证流资源 一定 ...

  10. Java IO 文件与流基础

    Java IO 文件与流基础 @author ixenos 摘要:创建文件.文件过滤.流分类.流结构.常见流.文件流.字节数组流(缓冲区) 如何创建一个文件 #当我们调用File类的构造器时,仅仅是在 ...

随机推荐

  1. 高德地图API-搜索提示并定位到位置,卫星地图和标准地图的切换

    // _yourMap地图实例 _yourMap.plugin(["AMap.MapType"], function () { //添加地图类型切换插件 //地图类型切换 mapT ...

  2. OSG开发笔记(三十三):同时观察物体不同角度的多视图从相机技术

    前言   前面的相机hud可以单独显示图形,继续深入研究相机hud,技术就是子视图了,实现该功能的直接技术是从相机技术.  本篇描述osg从相机技术   Demo         相机视口的关键调用 ...

  3. Linux中find命令详解

    find命令 find 命令用于查找文件或目录 语法格式: find ./ -type f -name '文件名' 参数依次是:find命令,这里的./指的是当前路径,-type是选择文件类型,文件类 ...

  4. Java中的Servlet基本概述

    1 Servlet基本生命周期 一个Servlet是HttpServlet的子类,由支持Servlet的服务器完成该子类的对象初始化的工作.当有多个客户端请求同一个Servlet时候,servlet引 ...

  5. openEuler欧拉配置Nacos集群

    ​一.安装Nacos systemctl stop firewalld ​systemctl disable firewalld mkdir -p /home/nacos tar xvf nacos- ...

  6. [Mybatis Plus]lambdaQueryWrapper和QueryWrapper的选择

    结论 更推荐使用:LambdaQueryWrapper QueryWrapper:灵活但是不够类型安全 LambdaQueryWrapper:安全 分析 在MyBatis-Plus中,QueryWra ...

  7. 【Java高级编程】Java多线程学习笔记

    Java 多线程 目录 Java 多线程 1.多线程创建 方法1:通过 继承 thread 类 方法2:通过 实现 Runnable 接口 2.线程中的相关方法 (1)设置优先级 setPrlorty ...

  8. gitlab runner install

    gitlab-runner install -d /home/gitlab-runner/ --syslog --user gitlab-runner

  9. sudo: source: command not found

    在Ubuntu上配置了jdk(非root用户),要使它的配置生效,在执行 sudo source /etc/profile 的时候提示 ,sudo: source: command not found ...

  10. Qt/C++音视频开发73-高效滤镜/文字水印/图形水印/图片水印/yolo运算后的结果显示到画面中

    一.前言 视频监控系统发展到今天,越来越智能,比如这些年流行的人脸识别.物体识别.烟感识别等,都是需要拿到图片数据去做运算处理,然后将结果显示到视频画面中,或者还有要求将结果保存到视频录像文件中,以便 ...