### Java Stream 全面讲解 #### 一、Java Stream 概述 在Java编程中,Stream(流)是一种处理集合元素的方式,它提供了一种声明式编程风格,使得程序员能够写出更加简洁、易于理解的代码。Java Stream API是Java 8引入的一个重要特性,它改变了我们处理集合的方式。除了Stream之外,Java还提供了丰富的I/O操作,如InputStream和OutputStream等,这些也是处理文件或网络数据的重要方式。 #### 二、Java Stream API 特性 1. **声明式编程**:Stream API允许你表达你想做什么而不是怎么做,这使得代码更易于阅读和维护。 2. **内部迭代**:不同于传统的外部迭代器或for循环,Stream API使用内部迭代来遍历数据。 3. **懒惰求值**:除非明确地执行,否则Stream的操作不会立即执行。这提高了性能,因为你可以组合多个操作并只执行一次。 4. **管道**:多个操作可以链接在一起形成一个管道。每个中间操作都对数据进行转换,而最终操作则产生结果。 #### 三、Java I/O Stream ##### 1. Streams 概念 Stream在Java中指的是信息源与目的地之间的通信路径。这里的“信息源”可以是文件、内存、网络等。Java中主要分为两种流:输入流(Input Stream)和输出流(Output Stream)。 ##### 2. InputStream 类 - **2.1 read 方法** `InputStream`类中的`read`方法用于从指定的输入流读取数据,主要有三种形式: 1. `int read(byte[] b)`:从指定的输入流中读取数据并存储到字节数组b中,返回实际读取的字节数,如果返回值小于数组长度,则表示已经到达流的末尾。 2. `int read()`:从指定的输入流中读取单个字节,返回值为读取的字节值,如果到达流的末尾则返回-1。 3. `int read(byte[] b, int off, int len)`:从指定的输入流中读取len个字节的数据到数组b中,从off位置开始存放,返回实际读取的字节数。 **示例代码**: ```java import java.io.FileInputStream; import java.io.IOException; public class TestIO { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("io.txt"); } catch (FileNotFoundException e) { System.out.println("文件未找到"); } int i; try { i = fis.read(); while (i != -1) { System.out.println((char) i); i = fis.read(); } } catch (IOException e) { System.out.println("IO错误"); } } } ``` - **2.2 skip 方法** `skip(long n)`方法用于将输入流的位置向前移动n个字节,返回实际移动的字节数。当n为负值时,通常无法实现向前移动。 - **2.3 available 方法** `available()`方法返回输入流中可读取的字节数。如果输入流不能确定可读取字节数,该方法返回0。 - **2.4 close 方法** `close()`方法用于关闭输入流。即使Java有垃圾回收机制可以自动关闭资源,但显式关闭可以提高效率。 ##### 3. ByteArrayInputStream `ByteArrayInputStream`是从`InputStream`继承而来的,用于从字节数组中读取数据。 - **创建实例** ```java byte[] buffer = new byte[1024]; fillWithUsefulData(buffer); // 填充数据的方法 InputStream s = new ByteArrayInputStream(buffer); InputStream s1 = new ByteArrayInputStream(buffer, 100, 300); ``` 其中,`ByteArrayInputStream(buffer, 100, 300)`创建了一个从第100个字节开始读取300字节的流。 - **其他方法** `ByteArrayInputStream`的其他方法与`InputStream`相似,例如`read()`、`skip()`等。 ##### 4. FileInputStream `FileInputStream`是从`InputStream`继承而来的,用于从文件中读取数据。 - **创建实例** ```java FileInputStream fis = new FileInputStream("aFileName"); FileDescriptor myFD = fis.getFD(); ``` `getFD()`方法返回文件描述符,可以用于后续操作。 通过以上介绍,我们可以了解到Java Stream及其I/O的基本概念和使用方法。这对于初学者来说是一个很好的起点,可以帮助他们更好地理解和应用Java中的流操作。
剩余15页未读,继续阅读
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- springboot农产品电商平台.zip
- springboot康复网上药店.zip
- springboot旅游管理系统.zip
- springboot民宿管理系统.zip
- C++语言实例-毕业设计项目:3D玫瑰图形渲染,算法优化与视觉效果-开题报告,论文,答辩PPT参考
- springboot教师考勤系统.zip
- springboot教学评价.zip
- springboot教学管理平台.zip
- springboot航空销售管理系统.zip
- springboot火车订票系统.zip
- Springboot健身房管理系统.zip
- springboot高校学生评教系统.zip
- springboot航空票务管理系统.zip
- springboot海纳部门人事管理系统.zip
- springboot高校心理健康系统.zip
- 俄罗斯方块c语言代码案例说明.docx
- 1
- 2
- 3
前往页