目录
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 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写...在 Java 中,文件 IO 流操作是非常重要的,掌握文件 IO 流操作可以帮助我们更好地处理文件相关的任务。
该文档主要整理了Java IO流的相关信息,主要包括IO流的按照不同维度的分类、节点流、处理流、输入输出流的处理过程、抽象基类的使用等细节内容
3. 处理流: - Filter流:这些流没有自己的数据源或目的地,而是包装其他流,提供额外的功能,如数据过滤、压缩等。例如,DataInputStream和DataOutputStream用于处理基本数据类型,GZIPOutputStream用于压缩数据。...
1. 字节流:Java的`java.io`包中提供了处理字节流的类,如`InputStream`和`OutputStream`作为所有字节输入流和输出流的基类。它们的子类如`FileInputStream`和`FileOutputStream`分别用于文件的读写。 2. 字符流:...
处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。 节点流和处理流的关系: 节点流处于io操作的第一线,所有操作必须通过他们进行;处理流可以对节点流 进行包装,提高性能或...
Java 中的 IO 流详解 Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来...
Java中的IO流是Java平台提供的一种处理输入输出数据的核心机制,广泛应用于文件读写、网络通信、数据转换等场景。IO流分为字节流(Byte Stream)和字符流(Character Stream),它们构成了Java IO系统的基础。 1. *...
Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,...在具体使用中很多初学者对Java.io包的使用非常含糊,本文将详细解说关于Java.io的使用…………
Java IO库包含了大量类和接口,它们分为四类主要流:字节流(Byte Streams)、字符流(Character Streams)、对象流(Object Streams)和套接字流(Socket Streams)。 1. 字节流:字节流处理单个字节的数据,包括...
在这个项目中,“利用Java的IO流写的一个记事本”是一个用Java编程语言实现的简单文本编辑器,具备基本的新建文件、保存文件等功能。下面将详细探讨Java IO流的原理及其在开发记事本应用中的运用。 首先,Java的IO...
1. 流:在Java中,流是一组有序的数据序列,可以是从内存到硬盘,也可以是从硬盘到内存,或者在网络间传输。流的概念抽象了数据传输的过程,使得程序员可以不必关注底层实现细节。 2. 输入流:负责读取数据,如从...
在Java IO流中,节点流是指离数据源或程序最近的流处理流,主要有两种类型:字节流和字符流。字节流可以处理一切类型的数据,如纯文本、音频、视频等,而字符流只能处理纯文本数据。 2. 字节流: 字节流是Java IO...
java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理
Java 支持两个数据流:InputStream 和 OutputStream。这两个数据流又可以分为许多子类来完成 IO 功能。 Java 1.1 版本正式加入了 Reader 和 Writer 两个类,支持 Java IO 的国际化标准,并通过国际化字符编码...
Java IO流是Java编程语言中处理输入和输出的重要机制,它允许程序与各种类型的输入源(如键盘、文件、网络连接)以及输出目标(如显示器、文件、网络)进行交互。在Java中,I/O流被设计为面向对象,使得处理数据变得...
java_IO流的处理.ppt java_IO流的处理.ppt
Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...
IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用Java的IO流来实现文件的复制。 首先,我们需要了解Java中的IO流体系。Java的IO库基于流的概念,流...
Java IO库设计时考虑到了字节流和字符流之间的转换,为此提供了两个桥接流:InputStreamReader和OutputStreamWriter。InputStreamReader将字节流转换为字符流,它需要一个字符集作为参数来解码字节;...
本文档能够帮助你了解java io流的处理