`
xiao1zhao2
  • 浏览: 40162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中的IO:处理流的使用

阅读更多

目录

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();
	}
}

 

1
2
分享到:
评论

相关推荐

    Java基础篇:IO流.pdf

    本知识点将深入探讨Java IO流的相关细节,包括节点流与处理流的概念,以及文件流、标准输入输出流、缓冲流、转换流、打印流、数据流和对象流的处理过程和使用方法。 首先,Java中的IO流根据数据流向可以分为输入流...

    Java中文件IO流.pdf

    Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写...在 Java 中,文件 IO 流操作是非常重要的,掌握文件 IO 流操作可以帮助我们更好地处理文件相关的任务。

    IO流 javaio java 流

    3. 处理流: - Filter流:这些流没有自己的数据源或目的地,而是包装其他流,提供额外的功能,如数据过滤、压缩等。例如,DataInputStream和DataOutputStream用于处理基本数据类型,GZIPOutputStream用于压缩数据。...

    Java-Io流,练习

    1. 字节流:Java的`java.io`包中提供了处理字节流的类,如`InputStream`和`OutputStream`作为所有字节输入流和输出流的基类。它们的子类如`FileInputStream`和`FileOutputStream`分别用于文件的读写。 2. 字符流:...

    java_io流的处理

    ### Java IO流处理详解 #### I/O流概述 在Java编程中,输入/输出(I/O)处理是一项核心技能,涉及从键盘读取数据、向屏幕输出数据、从文件读写数据以及在网络连接上进行读写操作。Java将这些不同的输入输出源抽象...

    JAVA IO流技术

    Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地...在实际编程中,根据需求选择适当的流类型,结合处理流进行优化,可以构建出高效、灵活的IO解决方案。

    java_IO流的处理.ppt

    Java IO流处理是Java编程中一个非常重要的概念,它用于在不同数据源之间传输数据,如文件、网络、内存等。在Java中,IO流分为两大类:输入流(Input Stream)和输出流(Output Stream),它们分别用于数据的读取和...

    java中的io流详解

    Java 中的 IO 流详解 Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来...

    彻底明白java中的IO流

    Java中的IO流是Java核心库java.io中的关键组成部分,它为程序提供了与外部资源交互的能力,包括文件读写、标准设备输入输出等。Java的IO流机制基于流的概念,流可以被视为数据传输的通道,数据按照序列化的方式从...

    java中IO流例子

    Java中的IO流是Java平台提供的一种处理输入输出数据的核心机制,广泛应用于文件读写、网络通信、数据转换等场景。IO流分为字节流(Byte Stream)和字符流(Character Stream),它们构成了Java IO系统的基础。 1. *...

    Java 的 IO流笔记.md

    Java的IO流体系主要包括以下几种流: - **FileInputStream/FileOutputStream**:节点流,用于以字节为单位直接操作文件。 - **ByteArrayInputStream/ByteArrayOutputStream**:节点流,用于以字节为单位直接操作...

    利用java的IO流写的一个记事本

    在这个项目中,“利用Java的IO流写的一个记事本”是一个用Java编程语言实现的简单文本编辑器,具备基本的新建文件、保存文件等功能。下面将详细探讨Java IO流的原理及其在开发记事本应用中的运用。 首先,Java的IO...

    java中的IO流整理

    1. 流:在Java中,流是一组有序的数据序列,可以是从内存到硬盘,也可以是从硬盘到内存,或者在网络间传输。流的概念抽象了数据传输的过程,使得程序员可以不必关注底层实现细节。 2. 输入流:负责读取数据,如从...

    Java IO流 总结

    在Java IO流中,节点流是指离数据源或程序最近的流处理流,主要有两种类型:字节流和字符流。字节流可以处理一切类型的数据,如纯文本、音频、视频等,而字符流只能处理纯文本数据。 2. 字节流: 字节流是Java IO...

    java零基础自学 之 JavaIO流处理

    Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。在Java中,流被形象地比喻为数据传输的通道,数据可以从一个源头(如文件、...

    java_io详解

    字符流处理类负责将外部的其他编码的字符流和Java内部使用的Unicode字符流之间进行转换。类`InputStreamReader`和`OutputStreamWriter`主要用于处理字符流和字节流之间的转换。 #### 5. 以字节为导向的流 以字节为...

    Java_IO流详解

    Java 支持两个数据流:InputStream 和 OutputStream。这两个数据流又可以分为许多子类来完成 IO 功能。 Java 1.1 版本正式加入了 Reader 和 Writer 两个类,支持 Java IO 的国际化标准,并通过国际化字符编码...

    JavaIO流详细总结

    Java IO流是Java编程语言中处理输入和输出的重要机制,它允许程序与各种类型的输入源(如键盘、文件、网络连接)以及输出目标(如显示器、文件、网络)进行交互。在Java中,I/O流被设计为面向对象,使得处理数据变得...

    java之io流实例

    Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...

    java流IO总结

    ### Java IO流详解 #### 一、概述 Java的I/O操作主要涉及使用Java语言进行输入和输出操作。Java的所有I/O机制都是基于数据流来进行输入输出,这些数据流表示了字符或字节数据的流动序列。理解Java的I/O模型对于...

Global site tag (gtag.js) - Google Analytics