Java 日看一类(28)之IO包中的Flushable接口和InputStream类

(每日持续更新)jdk api之Flushable基础、应用、实战 Flushable接口没有定义任何字段。刷新该流的缓冲区,将数据写入到目标设备中。 阅读详情

Flushable接口无继承类

引入了

import java.io.IOException;



该接口的类头注释如下:

/**
 * A <tt>Flushable</tt> is a destination of data that can be flushed.  The
 * flush method is invoked to write any buffered output to the underlying
 * stream.
 *
 * @since 1.5
 */

大意如下:

该类是可被输出数据输出的目标地

调用该方法可讲已缓存的输出写入底层输出流



该类含有一个方法:

将缓冲推入底层流中

void flush() throws IOException;




该类的使用见前面的输出流,基本都有用到。该方法十分重要,与缓冲搭配提高IO速率;在流关闭时调用防止数据缺失等。




InputStream类无引入包

实现了Closeable接口


类头注释如下:

/**
 * This abstract class is the superclass of all classes representing
 * an input stream of bytes.
 *
 * <p> Applications that need to define a subclass of <code>InputStream</code>
 * must always provide a method that returns the next byte of input.
 *
 * @author  Arthur van Hoff
 * @see     java.io.BufferedInputStream
 * @see     java.io.ByteArrayInputStream
 * @see     java.io.DataInputStream
 * @see     java.io.FilterInputStream
 * @see     java.io.InputStream#read()
 * @see     java.io.OutputStream
 * @see     java.io.PushbackInputStream
 * @since   JDK1.0
 */

大意如下:

该抽象类是所有byte输入流的父类

应用程序需要声命该类的子类必须要提供返回输入流中下一个字节的方法



该类含有如下成员变量:

实施跳过操作时的最大缓冲区大小

private static final int MAX_SKIP_BUFFER_SIZE = 2048;




该类含有如下的成员方法:

从输入流中读取下一个字节

public abstract int read() throws IOException;

从输入流中读取该数组大小的字节

public int read(byte b[]) throws IOException {
    return read(b, 0, b.length);
}

从输入流中读取进数组特定位置,特定长度的字节

public int read(byte b[], int off, int len) throws IOException {
    if (b == null) {
        throw new NullPointerException();//空数组指针
    } else if (off < 0 || len < 0 || len > b.length - off) {//标识符越界
        throw new IndexOutOfBoundsException();
    } else if (len == 0) {
        return 0;
    }

    int c = read();
    if (c == -1) {//读取失败
        return -1;
    }
    b[off] = (byte)c;

    int i = 1;
    try {
        for (; i < len ; i++) {//重复调用读取单个字节的方法并转格式储存
            c = read();
            if (c == -1) {
                break;
            }
            b[off + i] = (byte)c;
        }
    } catch (IOException ee) {
    }
    return i;//返回实际读取长度
}

跳过后续的n个字节

public long skip(long n) throws IOException {

    long remaining = n;
    int nr;

    if (n <= 0) {//需跳过长度小于0
        return 0;
    }

    int size = (int)Math.min(MAX_SKIP_BUFFER_SIZE, remaining);//创建一个不大于最大缓冲区大小的缓冲区
    byte[] skipBuffer = new byte[size];
    while (remaining > 0) {//重复装填
        nr = read(skipBuffer, 0, (int)Math.min(size, remaining));//将跳过的字节储存进缓冲区
        if (nr < 0) {
            break;
        }
        remaining -= nr;//减去已跳过的字节
    }

    return n - remaining;//返回实际跳过大小
}

返回缓冲区中可被直接读取或跳过的估计字节数

public int available() throws IOException {
    return 0;
}

关闭流

public void close() throws IOException {}

在当前位置设置标记点(传入值为回滚上限

public synchronized void mark(int readlimit) {}

回滚

public synchronized void reset() throws IOException {
    throw new IOException("mark/reset not supported");
}

判定当前类是否支持标记回滚操作

public boolean markSupported() {
    return false;
}


该类是所有字节输入类的父类,代码内容虽然没有什么,但是体系架构方式值得我们学习

AD9176 双通道高速DAC调试记录 AD9176是一款高性能双通道16位数模转换器,支持高达12.6GSPS采样率,专为多频段无线应用设计。该器件集成8通道15.4Gbps JESD204B接口,支持复数/实数数据输入,每通道最大输入速率达3.08GSPS。关键特性包括:48位高精度NCO、灵活的插值滤波器(最高12倍)、优异的动态性能(SFDR达-83dBc@1.84GHz)以及多芯片同步功能。硬件调试需重点关注时钟配置(建议250M基准时钟)、JESD参数匹配及交流耦合设计。测试指标要求SFDR>55dBc@312MHz,实测值可达65d 阅读详情

相关推荐

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2834

Java IO之Flushable

Flushable 源码 package java.io; import java.io.IOException; /** * A Flushable is a destination of data that can be flushed. The * flush method is invoked to write any buffered output to the underl

ˉ-_lishk_-ˉ 755

命名管道和匿名管道

我们知道进程间是可以通信的。可以达到数据传输、资源共享、事件通知、进程控制等目的。进程间通信主要包括管道、系统IPC,套接字等。 管道分为三种: 普通管道:一是单工,只能单向传输 ,二是仅能在父子进程或者兄弟进程中使用。 流管道:去除了第一种限制,为半双工,可以双向传递, 命名管道:去除了第二种限制 ,可以在很多并不相关的进程 中进行通信。 1、普通管道 int pipe(int f...

ffsiwei的博客 1万+

深入解析Java中Flushable接口的flush方法

今天写这篇文章是为了纪念同事讲得两句话:1、调用flush方法等于在后面对OutputStream使劲的抽一鞭子,并命令“赶紧给我写入,我的水桶太满了”;2、写入数据量不大时,可以考虑不用。 先来说说flush方法为了解决什么问题。我们都知道在Linux中,可写的句柄都是”文件“,并且,不管是Windows还是Linux都有提供相同名字的flush系统调用,而且操作系统在写文件时,先把要写的内容...

zhangcarcard的博客 3419

华为ENSP完整安装教程

华为ENSP完整安装教程

Hnm456756的博客 7342

SRv6项目实践(三):P4Runtime基础以及交换机控制

在正式介绍P4runtime基础之前,先说一说P4的编译和实现的过程该文件包含了各个表和操作,它们的id用一个索引值来表示,比如a表用b操作,不会直接说用名字为B的操作,而是说用索引为xxx的操作,然后锁定到b上执行相关的功能,其次,用了一个bitwith来描述,要访问的数据的比特长度是多长。p4c编译器将p4编译成两份文件,其中一份是,另一份是,将这两个文件再整合起来,作为配置,放到交换机中。

a1164520408的博客 3411

Java基础:IO 流中的 flush

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 内容概要 Java IO流的设计不得不让人拍案叫绝,佩服设计者鬼斧天工的手法。 如果你是Java初学者,我敢保证第一次接触Java的IO类,一定会 ”狂晕!”,倒不是因为它有多么难学而是太多,而且及其让人有种 “不识庐山...

CodingMan 4万+

高通8155源码下载与Android源码编译

一.下载代码 高通下载源码位置: Qualcomm CreatePoint 注册账号,然后登入 可以先选择edit -> infotainment -> sa8155 -> favorites, 点击View TOC就可以过滤出sa8155所有的信息目录.如下图 拉取代码链接在ChipCode中,点击进去可以看到所有的基线版本,选择你需要下载的版本点进去,如sa8155p-la-1-0_ap_standard_oem,把高通专有代码和开源代码都下载到本机. 1..

Johnny2004的专栏 7675

java IO之AutoCloseable,Closeable和Flushable接口

Java IO之AutoCloseable,Closeable和Flushable接口

zmt0104的博客 540

uniApp微信小程序:error: 60001 request:fail errcode:-101 cronet error code:-101error_msg:net::ERR CONNECTI

uni-app微信小程序域名访问报error 60001 request:fail errcode:-101,解决Uniapp微信小程序报600001错误,uni.request()接口请求报错,服务器更换SSL证书后,uniapp微信小程序出现`request:fail errcode:-101`问题分析与解决,服务器更换ssl证书后,手机访问微信小程序异常,微信小程序更换SSL证书后出现请求报错,服务器更换SSL证书,微信小程序报600001,小程序反应偶尔出现request:fail errcode:

✅ 精选推荐文章 4584

RNA-seq分析:Step4(比对)

预处理之后的fastq文件,可以使用HISAT2软件将reads比对至参考基因组上。HISAT2软件将reads比对至参考基因组上的步骤如下:1. 对参考基因组进行建索引。对参考基因组进行预处理,生成索引文件,包括基因组序列的FM索引和SA索引。2. 将原始的reads进行预处理。包括去除接头序列、去除低质量的碱基,以及进行过滤,得到质量较高的、可靠的reads。3. 利用建立的FM索引和SA索引,将处理后的reads与参考基因组进行比对。首先,通过FM索引,快速找到与reads匹配的可能位置;

沉香best的博客 2599

io的5个类和三个接口以及File文件的一些操作方法

关于io的核心类,在Java.io包种最重要的就是5个类和3个接口,这5个类分别是File(文件类),InputStream(字节输入流),OutoutStream(字节输出流),Reader(字符输入流),Writer(字符输出流),3个接口分别是Closeable(关闭流接口),Flushable(刷新流接口),Serializable(序列化接口) File文件的一些操作方法如下 packa...

weixin_44007988的博客 552

【电源专题】LDO基础——热性能2

对于LDO散热而言,选择合适的元件并不是一件简单的任务。为了实现高效、尺寸得当并成本低的散热解决方案,我们在早期设计阶段就需要确保所有器件都可用并且已经考虑到元件和各种特性。

一点硬件 895

Java之IO(一)InputStream和OutputStream

  转载请注明源出处:http://www.cnblogs.com/lighten/p/6964702.html 1.前言   计算机的IO操作一直都是比较重要的一环,IO顾名思义,就是输入输出流。不管是磁盘IO还是网络IO,数据流转就离不开IO,理解Java的IO操作类很重要,本文介绍IO的抽象父类InputStream和OutputStream,这是Java的IO操作基础,理解完...

decvo6179的博客 237

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JDK 1.7 java.io 源码学习之Closeable、Flushable、Appendable接口

Closeable、Flushable、Appendable

给自己一个前行的动力 1857

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java io流和util流

java io流和util流1. java.io (io流)1.1 InputStream类图1.2 Reader类图1.3 OutputStream类图1.4 Writer类图2. java.util.stream (util流) io流 和 util流 两者毫无关系,io流和util流都实现 java.lang.AutoCloseable 接口,但是io流又用 java.io.Closeable 接口覆盖了close方法并且抛出了 IOException,其中的输出流还需要实现 java.io.Flus

u012551120的博客 406

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java IO流

流的本质是数据传输,根据数据传输特性将流抽象为各种类 Java IO流中的常用类和接口 五大类 1.File类---->文件类 2.InputStream类---->字节输入类 3.OnputStream类---->字节输出类 4.Writer类---->字符输入流 5.Reader类---->字符输入类 三大接口 1.Closeable接口---->关闭流接口...

cc098818的博客 798

JAVA mac系统io文件流,JAVA常用包之java.io文件流

学习目的了解java.io包的含义和作用学会查看java.io包下类和接口的底层源码实现掌握java.io包的常用接口和类,以及常用的方法四、java.io概念通过数据流、序列化和文件系统提供系统输入和输出。流是java文件和计算机底层进行交流的一种方式、形式,计算机只认识二进制的补码。流的形式写入:硬盘文件-->译成字节码-->二进制流-->字节解码-->内存文件写出:内...

weixin_39925031的博客 401

InputStream和OutputStream

1、输入/输出流以处理字节和字符分类形成两个单独的层次结构: (1)InputStream和OutputStream类可以读写单个字节或字节数组。 (2)Reader和Writer类可以读写基于两字节的Char值,即Unicode文本。 2、还有4个附加的接口:Closeable、Flushable、Readable和Appendable。InputStream、OutputStrea...

weixin_30763455的博客 155

IO简单操作

IO操作总体简单认知:Java中IO包下的类关系图文件操作字符字节 总体简单认知: IO就是输入输出操作。输入又可以有两个问题,从什么地方(也就是输入什么)输入,以哪种方式输入。输出也是类似。输出到那(输出什么),怎么输出。 Java中IO包下的类关系图 文件操作 字符 字节 ...

zhou_heaven的博客 586

The Closeable, Flushable, Readable, and Appendable interfaces

Java SE 5.0引入了4个附加的接口:Closeable、Flushable、Readable和Appendable。Closeable拥有方法 void close() throws IOException;Flushable拥有方法 void flush() throws IOException;Readable拥有方法 public int read(java.nio.CharBuff

cactusz的博客 341

Java中的IO流

1、什么是IO流? I是Input,O是Output,通过IO流可以完成对硬盘文件的读和写 2、IO流的分类 (1)按流的方向分【以内存为参照】 输入流:往内存中去 输出流:从内存中出来 (2)按流读取数据的方式不同 字节流:有的流是按字节方式读取数据的,一次只能读取一个字节,相当于读取八位二进制,这 种流是万能的,可以读取任何类型的文件,包括:文本文档,图片,声音文件...... 字符流:有的流是按字符方式读取数据的,一次只能读取一个字符,但这种流不能...

m0_49364743的博客 166

对Java的IO的理解1

IO(input & output)在生活中随处可见,比如上网,上传文件资料,或者下载,文件,音乐,然后在自己的电脑上听下载好的音乐,这就涉及到了IO,有和服务器的交流和客户的交流,更多的是关注客户的交流。 IO流:有字节流(0、1)和字符流(比如字母,中文),即数据源(譬如文件,数据库等存储数据的介质)和程序之间的数据流向。 IO流以0 1 形式存在 核心类:1.File文件类 2.InputStream字节输入流 3.OutputStream字节输出流 4.Writer字符输出流 5.

qq_46069657的博客 181

Java学习路线-26:字节流与字符流OutputStream/InputStream/Writer/Reader

第16章 字节流与字符流 72 流的基本概念 File类是唯一一个与文件本身有关的程序处理类 File类只能够操作文件本身,而不能操作文件内容 IO操作:输入输出操作 java.io 抽象类 输出 输入 字节流:OutputStream, InputStream 字符流:Writer, Reader 文件处理流程: 1、File找到一个文件 2、...

彭世瑜的博客 1248

Java_141_IO_封装拷贝(文件到文件,文件到字节数组,字节数组到文件)_封装释放_可变参数_try(自动释放)_Closeable接口_Flushable接口

封装拷贝 封装释放 可变参数(typeName... name) 自动释放try...with...resource 例:try(InputStream in=new FileInputStream(path);OutputStream out=new FileOutputStream(path)){ code... }catch{} 不要写finally package IOStudy; import java.io.ByteArrayInputStream; import jav..

pmcasp的博客 264

JAVA的输出流 - java.io.OutputStream

继承关系 同InputStream一样实现了closeable接口外 实现了Flushable接口 flush方法 主要方法 /** * Writes the specified byte to this output stream. The general * contract for <code>write</...

匿名 321
上一篇: Java 日看一类(27)之IO包中的FilterWriter类
下一篇: Java 日看一类(29)之IO包中的InputStreamReader类
wyf95278
博客等级 码龄10年 38粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值