目录
1.桥梁流
2.缓冲流
3.数据流
4.对象流
5.合并流
1.桥梁流
1)InputStreamReader是输入字节流通向输入字符流的桥梁,每次调用read()方法都会导致从底层输入流读取一个或多个字节.
2)OuputStreamWriter是输出字节流通向输出字符流的桥梁,每次调用write()方法都会导致在给定字符集上调用编码转换器.
3)桥梁流虽然是一种处理流,但可将其包装到缓冲流中,已提高效率.
2.缓冲流
缓冲流中比较常用的是BufferedReader和BufferedWriter,BufferedReader中提供了readLine()方法,实现了读取一行文本;BufferedWriter中提供了newLine()方法,实现了写入一个行分隔符.下面我们对java所有源文件内容进行读取搜索,输出包含1.8新特性的文件:
public class Buffer_Reader_Writer { public static void search(File file, String str) throws IOException { File[] files = file.listFiles(); // 判断是否为文件夹,是则递归查找 if (file.isDirectory() && files.length != 0) { for (File sub : file.listFiles()) { search(sub, str); } } else { // 构造缓存输入流并按行读取文件 BufferedReader br = new BufferedReader(new FileReader(file)); String temp = br.readLine(); while (temp != null) { if (temp.contains(str)) { System.out.println(file.getAbsolutePath()); break; } temp = br.readLine(); } br.close(); } } public static void main(String[] args) throws IOException { search(new File("c:\\Program Files\\java\\src1.8"), "@since 1.8"); } }
3.数据流
数据流允许应用程序以与机器无关方式从底层节点流中读写java基本数据类型和String类型.例:
public class DataStreamDemo { public static void write() throws Exception { DataOutputStream dos = new DataOutputStream(new FileOutputStream(new File("c:\\a.txt"))); dos.writeInt(89); dos.writeFloat(3.14f); dos.writeBoolean(false); dos.writeUTF("Hello World"); dos.close(); } public static void read() throws Exception { DataInputStream dis = new DataInputStream(new FileInputStream(new File("c:\\a.txt"))); System.out.println(dis.readInt()); System.out.println(dis.readFloat()); System.out.println(dis.readBoolean()); System.out.println(dis.readUTF()); dis.close(); } public static void main(String[] args) throws Exception { write(); read(); } }
注意:读的顺序需要与写的顺序保持一致.
4.对象流
ObjectOutputStream,通过writeObject()方法将java对象写入OutputStream,这个过程称为序列化,实现序列化的类必须实现Serializable接口;ObjectInputStream,通过readObject()方法将之前的对象进行反序列化.例:
public class ObjectStreamDemo { public static void write() throws Exception { A a1 = new A("a", new B(97)); A a2 = new A("b", new B(98)); B b1 = new B(100); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:\\obj.txt")); oos.writeObject(a1); oos.writeObject(a2); oos.writeObject(b1); oos.close(); } public static void read() throws Exception { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c:\\obj.txt")); A a3 = (A) ois.readObject(); A a4 = (A) ois.readObject(); B b2 = (B) ois.readObject(); System.out.println(a3); System.out.println(a4); System.out.println(b2); ois.close(); } public static void main(String[] args) throws Exception { write(); read(); } } class A implements Serializable { String name; B b; public A(String name, B b) { this.name = name; this.b = b; } public String toString() { return "name:" + name + "\t" + b.toString(); } } class B implements Serializable { int age; public B(int age) { this.age = age; } public String toString() { return "age:" + new Integer(age).toString(); } }
运行结果:
name:a age:97
name:b age:98
age:100
并且在c盘目录下生成obj.txt文件.
5.合并流
SequenceInputStream,表示两个或多个输入流的逻辑串联,第一个输入流开始读取,直到到达包含的最后一个输入流的文件末尾为止.例:
public class Test { public static void main(String[] args) throws Exception { FileInputStream fis1 = new FileInputStream("c:\\sequence1.txt"); FileInputStream fis2 = new FileInputStream("c:\\sequence2.txt"); // 将fis1和fis2串联成sis SequenceInputStream sis = new SequenceInputStream(fis1, fis2); FileOutputStream fos = new FileOutputStream("c:\\sequence3.txt"); int temp = 0; while ((temp = sis.read()) != -1) { fos.write(temp); } fis2.close(); sis.close(); fos.close(); } }
相关推荐
本知识点将深入探讨Java IO流的相关细节,包括节点流与处理流的概念,以及文件流、标准输入输出流、缓冲流、转换流、打印流、数据流和对象流的处理过程和使用方法。 首先,Java中的IO流根据数据流向可以分为输入流...
Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写...在 Java 中,文件 IO 流操作是非常重要的,掌握文件 IO 流操作可以帮助我们更好地处理文件相关的任务。
3. 处理流: - Filter流:这些流没有自己的数据源或目的地,而是包装其他流,提供额外的功能,如数据过滤、压缩等。例如,DataInputStream和DataOutputStream用于处理基本数据类型,GZIPOutputStream用于压缩数据。...
1. 字节流:Java的`java.io`包中提供了处理字节流的类,如`InputStream`和`OutputStream`作为所有字节输入流和输出流的基类。它们的子类如`FileInputStream`和`FileOutputStream`分别用于文件的读写。 2. 字符流:...
### Java IO流处理详解 #### I/O流概述 在Java编程中,输入/输出(I/O)处理是一项核心技能,涉及从键盘读取数据、向屏幕输出数据、从文件读写数据以及在网络连接上进行读写操作。Java将这些不同的输入输出源抽象...
Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地...在实际编程中,根据需求选择适当的流类型,结合处理流进行优化,可以构建出高效、灵活的IO解决方案。
Java IO流处理是Java编程中一个非常重要的概念,它用于在不同数据源之间传输数据,如文件、网络、内存等。在Java中,IO流分为两大类:输入流(Input Stream)和输出流(Output Stream),它们分别用于数据的读取和...
Java 中的 IO 流详解 Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来...
Java中的IO流是Java核心库java.io中的关键组成部分,它为程序提供了与外部资源交互的能力,包括文件读写、标准设备输入输出等。Java的IO流机制基于流的概念,流可以被视为数据传输的通道,数据按照序列化的方式从...
Java中的IO流是Java平台提供的一种处理输入输出数据的核心机制,广泛应用于文件读写、网络通信、数据转换等场景。IO流分为字节流(Byte Stream)和字符流(Character Stream),它们构成了Java IO系统的基础。 1. *...
Java的IO流体系主要包括以下几种流: - **FileInputStream/FileOutputStream**:节点流,用于以字节为单位直接操作文件。 - **ByteArrayInputStream/ByteArrayOutputStream**:节点流,用于以字节为单位直接操作...
在这个项目中,“利用Java的IO流写的一个记事本”是一个用Java编程语言实现的简单文本编辑器,具备基本的新建文件、保存文件等功能。下面将详细探讨Java IO流的原理及其在开发记事本应用中的运用。 首先,Java的IO...
1. 流:在Java中,流是一组有序的数据序列,可以是从内存到硬盘,也可以是从硬盘到内存,或者在网络间传输。流的概念抽象了数据传输的过程,使得程序员可以不必关注底层实现细节。 2. 输入流:负责读取数据,如从...
在Java IO流中,节点流是指离数据源或程序最近的流处理流,主要有两种类型:字节流和字符流。字节流可以处理一切类型的数据,如纯文本、音频、视频等,而字符流只能处理纯文本数据。 2. 字节流: 字节流是Java IO...
Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。在Java中,流被形象地比喻为数据传输的通道,数据可以从一个源头(如文件、...
字符流处理类负责将外部的其他编码的字符流和Java内部使用的Unicode字符流之间进行转换。类`InputStreamReader`和`OutputStreamWriter`主要用于处理字符流和字节流之间的转换。 #### 5. 以字节为导向的流 以字节为...
Java 支持两个数据流:InputStream 和 OutputStream。这两个数据流又可以分为许多子类来完成 IO 功能。 Java 1.1 版本正式加入了 Reader 和 Writer 两个类,支持 Java IO 的国际化标准,并通过国际化字符编码...
Java IO流是Java编程语言中处理输入和输出的重要机制,它允许程序与各种类型的输入源(如键盘、文件、网络连接)以及输出目标(如显示器、文件、网络)进行交互。在Java中,I/O流被设计为面向对象,使得处理数据变得...
Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...
### Java IO流详解 #### 一、概述 Java的I/O操作主要涉及使用Java语言进行输入和输出操作。Java的所有I/O机制都是基于数据流来进行输入输出,这些数据流表示了字符或字节数据的流动序列。理解Java的I/O模型对于...