绝大多数应用程序在运行过程中都会进行两种类型的计算:一种是占用CPU时间的计算,另外一种是与数据输入/输出(I/O)相关的计算。在这两种计算中,一般是与I/O相关的计算所花费的时间占较大的比重。这其中的主要原因是在进行I/O操作时,一般需要竞争操作系统中有限的资源,或是需要等待速度较慢的外部设备完成其操作,从而造成I/O相关的计算所等待的时间较长。从性能优化的角度出发,提升I/O相关操作的性能会对应用程序的整体性能产生比较大的帮助。
最早的java.io包把I/O操作抽象成数据的流动,进而有了流(stream)的概念。在Java NIO中,则把I/O操作抽象成端到端的一个数据连接,这就有了通道(channel)的概念。

1. 流

Java中最基本的流是在字节这个层次上进行操作的。也就是说基本的流只负责在来源和目的之间传输字节,并不负责对字节的含义进行解释。在基本的字节流基础上,Java也提供了一些过滤流(filter stream)的实现。这些过滤流实际上是基本字节流上的一个封装,在其上增加了不同的处理能力,如基本类型与字节序列之间的转换等。这些过滤流对开发人员的接口更加友好,可以自动完成很多转换工作。

Java 7新特性总结 - Java IO相关推荐

  1. 【Java 8 新特性】Java Stream 通过skip()方法跳过前N个子元素

    [Java 8 新特性]Java Stream 通过skip方法跳过前N个子元素 1.skip() 示例 2.skip() vs limit() 参考文献 本页将介绍 Stream.skip方法示例. ...

  2. IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍

    文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...

  3. 【Java 8 新特性】Java 8 flatMap 使用示例

    文章目录 1.在List中使用`Stream.flatMap`方法 2.在List列表中使用`Stream.flatMap`方法 3.在Array中使用`Stream.flatMap`方法 4.在对象 ...

  4. 【Java 8 新特性】Java Stream.of()用法示例

    本页将介绍Java Stream.of方法示例.Stream.of用于为给定元素创建顺序流.我们可以传递单个元素或多个元素. 查看javadoc中Stream.of方法声明. static <T ...

  5. 【Java 8 新特性】Java 8 Collectors:joining()使用示例

    文章目录 1.`joining()`方法说明 2.使用`Collectors.joining()`方法拼接包含`String`类型的`List` 2.使用`Collectors.joining()`方 ...

  6. 【Java 8 新特性】Java 8 时间接口示例:MonthDay、Month、OffsetDateTime 和 OffsetTime

    Java 8 时间接口示例:MonthDay.Month.OffsetDateTime 和 OffsetTime java.time.MonthDay java.time.Month java.tim ...

  7. 【Java 8 新特性】Java 8 Collectors示例

    Java 8 Collectors示例 Collectors.averagingDouble Collectors.averagingInt Collectors.averagingLong Coll ...

  8. 【Java 8 新特性】Java Supplier示例

    Java Supplier是一个功能接口,代表结果的提供者. Supplier的功能方法是get(). 一个Supplier可以通过lambda表达式.方法引用或默认构造函数来实例化. Supplie ...

  9. 【Java 8 新特性】Java 8 Util API: StringJoiner 详解 | 拼接字符串添加分隔符、前缀和后缀

    Java 8 Util API: StringJoiner 详解 StringJoiner(CharSequence d) StringJoiner.add(CharSequence element) ...

  10. 【Java 8 新特性】Java 8 UnaryOperator和BinaryOperator示例

    Java 8 UnaryOperator和BinaryOperator示例 UnaryOperator BinaryOperator BinaryOperator.maxBy和BinaryOperat ...

最新文章

  1. android 固定大小数组,android-Kotlin中的最大数组大小
  2. Mac 删除应用卸载后无法正常移除的图标
  3. 深度学习——02、深度学习入门——经典卷积神经网络架构实例——AlexNet
  4. NCPC2018 D.Delivery Delays[二分答案+DP check]
  5. 深入了解C++与C语言的区别
  6. 给Visual Studio 2005设置一个代码边界线
  7. elastic-job和xxl-job实践对比
  8. Springboot专利申请服务平台 毕业设计-附源码260839
  9. keil4 代码折叠功能的使用
  10. 3D GAME PROGRAMMING WITH DIRECTX11 (1)
  11. 计算机网络故障是指啥,网络故障管理
  12. Win7通过CMD命令开启无线热点
  13. 【sphinx】中文声学模型训练
  14. uni-app 微信小程序全局配置分享好友、朋友圈...
  15. Hive常见面试题汇总
  16. Android导航栏自动隐藏,Android隐藏和显示虚拟导航栏
  17. 如何在iPhone/iPad上录屏
  18. chdir: No such file or directory (chdir()函数、strtok()函数)
  19. Android Spinner控件 显示数据和下拉选中数据分离
  20. Bootstrap栅栏布局里col-xs-*、col-sm-*、col-md-*、col-lg-*之间的区别及使用方法

热门文章

  1. 外挂辅助技术研究-分析选怪功能
  2. 什么是boolean 型?
  3. java getclass用法_java 中getClass()的用法
  4. TensorFlow Lite简介
  5. qprocess回调_Qt图形编程基础之:Qt/Embedded开发入门-嵌入式系统-与非网
  6. 进入PE后打开c盘提示无法访问c文件或目录损坏,且无法读取
  7. win7 无Internet访问权限的解决方法
  8. hint: The ‘.git/hooks/pre-commit‘ hook was ignored because it‘s not set as executable.
  9. iPhone触摸屏故障一系列解决方法
  10. 【学习总结】JS变量提升