InputStream
int read()从数据流中读取一个字节,如果读不到会阻塞

int read(byte[] b)从数据流中读取字节放入字节数组并返回实际读取的字节数。最多读取的字节长度是这个字节数组的长度

int read(byte[] b,int off, int len)从数据流中读取len个字节字节数组的off下标开始存入字节数组

long skip(long n)主要用在包装流中的。流只能顺序读不能跳跃读,但是包装流可以用skip方法跳跃读取

int available()返回当前数据流中可读取的字节数。在读取之前用available()判断数据流中是否有数据字节

void mark(int readlimit) 用在输入流中建立一个标记,建立标记以后,mark方法接收一个参数从标记开始最多读取readlimit个字节

void reset()与mark配合使用,让指针回到以前标记处,例如建立标记a,读出n个字节后调用reset(),读取数据仍然从标记a处开始
boolean markSupported()返回当前流对象是否支持mark和reset方法

void close()用于完成一个流的所有操作后关闭流,以释放与这个流相关的资源

InputStream类是一个抽象类,程序中实际使用的是InputStream类的各种子类对象,不是所有的子类都支持InputStream所提供的所有方法,比如mark,skip,reset方法对节点流就不适用,只适用于包装类

有了垃圾回收期,为什么还要调用close方法:当程序创建了一个IO流对象的同时,也创建了一个叫流的东西,计算机内存中产生了两个东西,一个是java程序的类实例对象,一个是系统产生的某种资源。垃圾回收器只管理程序当中的类实例对象,不会管理系统产生的资源。所以用close方法通知系统释放这个对象所表示的流资源。

OutputStream
程序可以向其中连续写入字节的对象叫输出流,在java中用OutputStream类来描述所有输出流的抽象概念,也是一个抽象类。描述了流类写入数据时的通用方法

outputStream类的方法:
void write(int b) 就是将一个整数中的最低一个字节的内容写入到输出流中,最高字节部分被舍弃。
void write(byte[] b)将字节数组当中的所有字节内容都写入到输出流对象中
void write(byte[] b,int off,int len)
void flush用于将内存缓冲区当中的内容彻底的清空并输出的IO输出设备中:提高了内存的使用率,write方法并没有真正的写入到IO设备,还有机会撤回部分写入的数据,使用缓冲区能提高计算机的效率,会降低程序自身的效率。在网络流中会造成一些数据的滞后,这样就降低了他的实时性效率。

对于InputStream输入流中也可以使用flush方法,用于将目标设备中一次将大量的数据读取到内存缓存区中,然后在缓存区中一行一行的读取到流中来

即使内存区数据没有存满,仍然可以调用flush方法将缓冲数据强制写入到外部设备习惯上称这个过程为刷新不是所有的Outputstream的子类都支持flush方法,只有那些个使用了缓存区的子类才能使用这个方法
当调用void close()方法,关闭输出流时缓存区中的内容也会输出到目标设备中

Java.IO.InputStream-OutputStream相关推荐

  1. struts2文件下载出现Can not find a java.io.InputStream with the name的错误

    今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...

  2. Java IO: InputStream

    转载自   Java IO: InputStream 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) InputStream类是Java I ...

  3. Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack.

    1.错误描述 八月 14, 2015 4:22:45 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error 严重: Exception ...

  4. Java IO 体系(二): inputstream与outputstream

    Java中文件数据流操作有2个大类:OutputStream/InputStream接口 和 FileWriter/FileReader类 1. OutputStream接口:所有字节输出流的超类 包 ...

  5. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  6. 你真的以为了解java.io吗 呕心沥血 绝对干货 别把我移出首页了

    文章结构 1 flush的使用场景 2 一个java字节流,inputstream 和 outputstream的简单例子 3 分别测试了可能抛出java.io.FileNotFoundExcepti ...

  7. 字节流InputStream/OutputStream

    字节流InputStream/OutputStream 本篇将对JAVA I/O流中的字节流InputStream/OutputStream做个简单的概括: 总得来说,每个字节流类都有一个对应的用途, ...

  8. java io 文件复制_实例讲述Java IO文件复制

    前言:IO流主要分为两大类,分别是字节流与字符流 注意: 1.音频文件.图片.视频(范围广),就用字节流 2.只涉及到文本的,就用字符流 使用字节流复制文本内容(其他文件也可以) 代码如下: impo ...

  9. java IO之 File类+字节流 (输入输出 缓冲流 异常处理)

    1. File类 File 路径问题: 上下级文件夹之间使用分隔符分开: 在Windows中分隔符为'\' ,在Unix/Linux中分隔符为'/' 跨平台分隔符: 专业的做法是使用File.sepa ...

  10. 五.Java IO、NIO、文件、通讯

    2019独角兽企业重金招聘Python工程师标准>>> Java 的 I/O 大概可以分成四组: 基于字节操作的 I/O :InputStream 和 OutputStream 基于 ...

最新文章

  1. 在ubuntu系统中使用dpkg命令安装后缀名为deb的软件包
  2. 【Web安全】漏洞之王-Sql注入原理与危害解析
  3. 经典面试题:给两个序列如何构造一棵二叉树
  4. STM32F4 HAL库开发 --时钟使能和配置
  5. python俄罗斯方块代码34行_少儿编程分享:码趣君教你用Python编写俄罗斯方块(四)...
  6. c语言判断闰年_C语言1博客作业06 - D丶千思
  7. TensorFlow报错:'dict' object has no attribute 'SerializeToString'
  8. 电力系统matlab实验报告,基于matlab语言计算电力系统暂态稳定仿真程序实验报告.docx...
  9. Excel导入oracle的几种方法
  10. quick cocos2dx 组件使用要领
  11. 使用微软官方的Winpe系统安装操作系统(包括下载Winpe、制作U盘启动工具、安装操作系统)
  12. 发射光功率和接收灵敏度对光模块的实际使用有什么影响?
  13. oracle12c性能测试,Oracle12c IMO 测试
  14. 全国总决赛前八名成绩
  15. IDEA高级使用教程
  16. html给页面整体添加左右边距_css控制边界与边框示例(内边距、外边距使用方法)...
  17. NC23053月月查华华的手机
  18. EMV技术学习和研究(三)应用初始化读应用数据
  19. ASP网站整站程序PHP源码-打听网(wordpress打造cms)-wordpress-cms整站打包程序-毕设源码实例
  20. 在Qt的dialog中内嵌一个dialog

热门文章

  1. 进阶项目(12)PS2键盘驱动程序设计讲解
  2. git tag 打标签(我看过最透彻的文章)
  3. ROS2编程基础课程--Launch
  4. JAVA-正则表达式匹配教程 使用正则表达式匹配字符串 截取匹配到的字符串
  5. u8文件服务器错误,u8提示文件服务器未配置
  6. 假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
  7. Oracle update语句用法
  8. 优学院计算机基础网课答案,最新网课答案2020优学院大学计算机基础
  9. leetcode第六题Z字形变换心得记录
  10. 用setTimeout来实现setInterval