java inputstream和outputstream_java runnable

java inputstream和outputstream_java runnable首页>基础教程>IO流>InputStream类JavaInputStream类java.io.InputStream类是所有JavaIO输入流的基类,它是以字节为单位的输出流。定义publicabstractclassInputStreamextendsObjectimplementsCloseable此抽象类是表示字节输入流的所有类的超类。需…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

首页 > 基础教程 > IO流 > InputStream类

Java InputStream类

java.io.InputStream类是所有Java IO输入流的基类,它是以字节为单位的输出流。

定义

public abstract class InputStream  extends Object  implements Closeable

此抽象类是表示字节输入流的所有类的超类。需要定义 InputStream 子类的应用程序必须总是提供返回下一个输入字节的方法。

类图

49f1a76d7d0487150fe03935917bfa95.png

BufferedInputStream: 提供了缓冲功能。

DataInputStream: 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。

PipedInputStream: 允许以管道的方式来处理流。当连接到一个PipedOutputStream后,它会读取后者输出到管道的数据。

PushbackInputStream: 允许放回已经读取的数据。

SequenceInputStream: 能对多个inputstream进行顺序处理。

方法

例子

public class InputStreamDemo01{

public static void main(String args[]) throws Exception{    // 异常抛出,不处理

// 第1步、使用File类找到一个文件

File f= new File(“d:” + File.separator + “test.txt”) ;    // 声明File对象

// 第2步、通过子类实例化父类对象

InputStream input = null ;    // 准备好一个输入的对象

input = new FileInputStream(f)  ;    // 通过对象多态性,进行实例化

// 第3步、进行读操作

byte b[] = new byte[1024] ;        // 所有的内容都读到此数组之中

input.read(b) ;        // 读取内容   网络编程中 read 方法会阻塞

// 第4步、关闭输出流

input.close() ;                        // 关闭输出流

System.out.println(“内容为:” + new String(b)) ;    // 把byte数组变为字符串输出

}

};

总结

1. 如果你正在开发一个从流中读取数据的组件,请尝试用InputStream替代任何它的子类(比如FileInputStream)进行开发。这么做能够让你的代码兼容任何类型而非某种确定类型的输入流。

2. Java中的Inputstream是不能重复读取的,它的读取是单向的,因为读取的时候,会有一个pos指针,他指示每次读取之后下一次要读取的起始位置,当读到最后一个字符的时候,pos指针不会重置。

3. 如果想要重复使用InputStream对象,可以先把InputStream转化成ByteArrayOutputStream,后面要使用InputStream对象时,再从ByteArrayOutputStream转化回来就好了。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191168.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于c++杀线程函数TerminateThread强烈不建议使用

     TerminateThread强烈不建议使用,因为这个函数的执行是异步的,你无法保证调用之后会立即退出,同时线程的堆栈均不会被销毁,导致内存泄露。如果调用了这个函数,请确保使用WaitForSingleObject来等待线程对象的结束。  参考链接:https://blog.csdn.net/kofandlizi/article/details/6458011https…

    2022年4月4日
    93
  • Linux: sctp 实例

    Linux: sctp 实例https://www.opensourceforu.com/2011/12/socket-api-part-5-sctp/需要安装lksctp-tools-develyuminstalllksctp-tools-devel编译需要-lsctpgccserver.c-lsctp-oserverClient,调用connet函数时,会触发SCTP-INIT消息,消息里的IPaddress列表是根据当前机器所配置的所有IP地址来填充,如何配置这个地址列表呢?:__sctp_con

    2022年6月23日
    34
  • JAVA小白 编程练习500题 超详细!!!带答案!!!持续更新中~

    JAVA小白 编程练习500题 超详细!!!带答案!!!持续更新中~JAVA小白编程题练习可能有很多刚入门的小白不知道自己如何能快速提升编程技巧与熟练度其实大佬进阶之路只有一个~那就是疯狂码代码!!!实践出真知!!!所以为了大家能够想练习的时候有素材,泡泡给大家整理了一些练习题由于平时比较忙,所以我在不定时努力更新中,欢迎监督~500是立的Flag啊哈哈哈哈,我们共同努力吧,先出个100道,希望能给大家带来帮助~????????????练习题1:接收用户输入的3个整数,并将它们的最大值作为结果输出packagecn.cxy.exec;importj

    2022年4月29日
    59
  • 关于write()和fsync()

    关于write()和fsync()writessize_twrite(intfd,constvoid*buf,size_tcount);将数据写到文件中.注意,如果文件是保存在硬盘中,write()函数调用返回之后,并不表示数据已经写入到硬盘中,这时如果掉电,数据可能会丢失.fsyncintfsync(intfd);程序调用本函数,通知内核把数据写到硬盘(file)中.比如,…

    2022年5月31日
    51
  • linux重启syslog服务命令_win7到正在启动进不去

    linux重启syslog服务命令_win7到正在启动进不去在CentOS6.x中,日志服务已经由rsyslogd取代了原先的syslogd。RedHat公司认为syslogd已经不能满足工作中的需求,rsyslogd相比syslogd具有一些新的特点:基于TCP网络协议传输日志信息。更安全的网络传输方式。有日志信息的即时分析框架。后台数据库。在配置文件中可以写简单的逻辑判断。与syslog配置文件相兼容。rsyslogd日志服…

    2022年8月15日
    5
  • 设计模式之工厂模式建议收藏

    一普通工厂模式1.类图2.代码实现#pragmaonce#include<iostream>usingnamespacestd;//抽象渲染类classIR

    2021年12月19日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号