Java Writer 类:掌握字符输出流 什么是 Writer? java.io.Writer 抽象类代表字符输出流。虽不可直接实例化,但其具体子类提供强大、类型安全的方式将文本写入文件、字符串或网络套接字。 常见 Writer 子类 BufferedWriter – 添加缓冲提高 I/O 效率 OutputStreamWriter – 用指定字符集连接字节流到字符流 FileWriter – 简化向本地文件系统写字符 StringWriter – 写入内存字符串缓冲区 创建 Writer 实例 导入包并用具体子类实例化。如写入 output.txt: import java.io.
Java Reader 类 什么是 Reader 类? Reader 位于 java.io,是字符输入流的抽象超类。不可直接实例化,其具体子类提供从各种源读取文本数据的功能。 Reader 常见子类 BufferedReader – 为字符、数组、行读取添加缓冲提高效率 InputStreamReader – 用指定字符集连接字节流到字符流 FileReader – 便利类,按默认字符集读文件 StringReader – 从字符串读取字符作为流 各子类将在专门教程深入讲解。 实例化 Reader 导入 java.io.Reader 和子类,如用 FileReader: import
掌握 Java PrintStream 类 PrintStream 位于 java.io,继承 OutputStream,专为输出人类可读文本而非原始字节设计。 PrintStream 工作原理 与其他流不同,PrintStream 在写入前将基本类型(int、char 等)转为格式化文本。且不抛 IOException,错误通过 checkError() 报告。 自动刷新是关键特性:以下情况自动刷新: 打印换行符(\n) 调用 println() 写入字节数组 创建 PrintStream 导入类: import java.io.PrintStream; 1. 从现有 OutputS
Java BufferedOutputStream:高效字节写入详解 BufferedOutputStream 位于 java.io,包装另一 OutputStream 加速字节输出。通过内存缓冲减少对底层设备的写操作,显著提升性能,尤其适合大文件。 继承抽象 OutputStream 并提供具体实现。 BufferedOutputStream 工作原理 内部默认分配 8 KiB(8,192 字节)缓冲区。调用 write() 时字节先存入缓冲区。仅当缓冲区满或调用 flush()/close() 时才刷入底层流。因磁盘 I/O 开销大,此缓冲策略减少往返,大幅加快字节写入。 创建 Buf
Java BufferedInputStream 类概览 BufferedInputStream 位于 java.io,通过内部缓冲增强字节输入流,实现更快更高效的数据读取。继承抽象 InputStream。 BufferedInputStream 工作原理 默认维护 8,192 字节内部缓冲区。读操作时,从底层流(通常为文件)获取一块字节存入缓冲区。后续读调用从缓冲区消费字节,耗尽后再加载下一块。减少昂贵磁盘 I/O,加速数据消费。 创建 BufferedInputStream 导入类: import java.io.BufferedInputStream; import java.io
Java ObjectOutputStream 类 ObjectOutputStream 来自 java.io,用于写入 Java 对象供 ObjectInputStream 后续读取。继承 OutputStream,是 Java 内置序列化机制的核心。 ObjectOutputStream 工作原理 向 ObjectOutputStream 写入对象时,框架将类名、字段值、类型信息编码为二进制格式——即序列化。生成的字节流可存文件、网络传输或内存嵌入。 重要: 仅实现 java.io.Serializable 的对象可序列化。该标记接口告知运行时对象可安全持久化或传输。 创建 Objec
Java ObjectInputStream 类 ObjectInputStream 位于 java.io,用于反序列化由 ObjectOutputStream 写入的对象。继承抽象 InputStream。 ObjectInputStream 工作原理 序列化将 Java 对象转为字节流以存储或传输。反序列化由 ObjectInputStream 完成,读取字节流重建原对象。 创建 ObjectInputStream 导入类后关联源(通常为 FileInputStream): // 关联文件 FileInputStream fileStream = new FileInputStream
掌握 Java ByteArrayOutputStream ByteArrayOutputStream 位于 java.io,可将数据写入自动扩容的内部字节数组。继承抽象 OutputStream,是内存字节操作的多功能工具。 注意:内部缓冲区按需扩容,通常无需预设容量,除非明确知道所需大小。 创建 ByteArrayOutputStream 导入 java.io.ByteArrayOutputStream 并实例化。默认缓冲区 32 字节: // 默认大小 ByteArrayOutputStream out = new ByteArrayOutputStream(); 可指定初始容量: /
Java ByteArrayInputStream ByteArrayInputStream 位于 java.io,实现 InputStream,可将字节数组作为输入流处理。内部保存数组副本,支持随机访问和高效读取。 注意: 流从数组本身读取,非外部源,所有操作基于内存。 创建 ByteArrayInputStream 导入 java.io.ByteArrayInputStream 并实例化,可读整个数组或切片: ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr); ByteArrayInputStream in
Java FileOutputStream 类 FileOutputStream 位于 java.io,用于向文件写入原始字节数据。继承抽象 OutputStream,是二进制文件操作的关键类。 创建 FileOutputStream 导入类后用文件路径或 File 对象实例化。 1. 使用文件路径 // 带追加标志 FileOutputStream output = new FileOutputStream(String path, boolean append); // 不带追加标志 FileOutputStream output = new FileOutputStream(Strin
Java FileInputStream 类 FileInputStream 位于 java.io,用于从文件读取原始字节数据。继承抽象 InputStream,提供文件 I/O 具体实现。 创建 FileInputStream 导入类后用文件路径或 File 对象实例化。 1. 使用文件路径 FileInputStream input = new FileInputStream(path/to/file.txt); 2. 使用 File 对象 File file = new File(file.txt); FileInputStream input = new FileInputStrea
Java OutputStream 类 OutputStream 位于 java.io,是表示字节输出流的抽象超类。不可直接实例化,需通过具体子类执行实际 I/O。 OutputStream 关键子类 FileOutputStream – 直接写字节到文件 ByteArrayOutputStream – 捕获字节到可扩展数组,适合内存操作 ObjectOutputStream – 将 Java 对象序列化为字节流 创建 OutputStream 实例 导入包并实例化子类: // 实例化 FileOutputStream OutputStream out = new FileOutput
Java InputStream 类 java.io 包中 InputStream 是表示字节输入流的抽象超类。不能直接实例化,其具体子类提供从文件、字节数组等读取数据的能力。 InputStream 关键子类 FileInputStream – 从磁盘文件读取字节 ByteArrayInputStream – 从内存字节数组读取 ObjectInputStream – 从输入流反序列化对象 本文重点讲解 FileInputStream。 创建 InputStream 导入类后实例化子类: import java.io.InputStream; InputStream stream =
Java 输入/输出流 Java 中流提供源与目标间的顺序数据流动,抽象底层数据传输,让开发者专注业务逻辑而非底层 I/O 处理。 输入流从源读取数据,输出流向目标写入数据。 class HelloWorld { public static void main(String[] args) { System.out.println(Hello, World!); } } 上例使用 System.out(PrintStream 实例,具体输出流)向控制台输出文本。输入流如 System.in 实现用户输入。 流的类型 按处理数据类型分类: 字节流 字符流
Java ListIterator 接口 ListIterator 扩展 Iterator,支持双向遍历,可在 List 中前后移动并即时修改元素。 核心功能包括导航、移除、替换元素,是 Java 开发者处理列表的必备工具。 ListIterator 核心方法 hasNext() – 前方有元素返回 true next() – 移动并返回下一个元素 nextIndex() – 返回 next() 将返回的元素索引 previous() – 向后移动并返回前一个元素 previousIndex() – 返回 previous() 将返回的元素索引 remove() – 删除 next() 或
Java Iterator 接口 Iterator 接口是 Java 集合框架的一部分,提供统一的方式遍历任意集合。ListIterator 扩展它以支持列表操作。 每个集合类都提供 iterator() 方法返回 Iterator 实例,支持安全遍历与操作。 Iterator 核心方法 hasNext() – 若存在后续元素返回 true next() – 获取下一个元素 remove() – 删除 next() 返回的最后一个元素 forEachRemaining() – 对剩余所有元素执行给定操作 示例:配合 ArrayList 使用 Iterator 下面演示在 ArrayLi
Java 集合算法 Java 集合框架提供一组静态方法(称为通用算法),可操作实现 Collection 接口的任意集合,简洁高效。 1. Collections.sort() 排序 sort() 按自然顺序(升序)排列元素。自定义排序需提供 Comparator。 import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new Ar
Java TreeSet TreeSet 类提供树数据结构功能,实现了 NavigableSet 接口。 创建 TreeSet 先导入 java.util.TreeSet,再创建实例: TreeSet<Integer> numbers = new TreeSet<>(); 无参构造按自然顺序(升序)排序。也可通过 Comparator 自定义排序规则。 TreeSet 方法 插入元素 add() – 插入指定元素 addAll() – 插入指定集合的所有元素 import java.util.TreeSet; class Main { public
Java NavigableSet 接口 本教程通过实例讲解 Java NavigableSet 接口及其方法。 NavigableSet 是 Java 集合框架中提供元素导航功能的接口,属于 SortedSet 的子类型。 实现 NavigableSet 的类 使用 NavigableSet 功能需借助实现该接口的 TreeSet 类。 如何使用 NavigableSet 需导入 java.util.NavigableSet 包,创建方式如下: // 由 TreeSet 实现的 SortedSet NavigableSet<String> numbers = new Tree
掌握 Java SortedSet:TreeSet 及其方法实战指南 Java 集合框架中的 SortedSet 接口代表一个按升序维护元素的集合。与普通 Set 不同,SortedSet 保证元素按自然顺序(实现 Comparable 的类型)或创建时提供的自定义 Comparator 排序。 它继承自 Set 接口,获得所有标准集合操作,并新增了一套范围查询方法,这对有序集合极为重要。 实现 SortedSet 的类 JDK 中 SortedSet 的唯一具体实现是 TreeSet。其底层使用红黑树,保证大多数操作的时间复杂度为 O(log n)。 如何使用 SortedSet 使用
java