`
xiao1zhao2
  • 浏览: 39495 次
  • 性别: 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 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写...在 Java 中,文件 IO 流操作是非常重要的,掌握文件 IO 流操作可以帮助我们更好地处理文件相关的任务。

    Java基础篇:IO流.pdf

    该文档主要整理了Java IO流的相关信息,主要包括IO流的按照不同维度的分类、节点流、处理流、输入输出流的处理过程、抽象基类的使用等细节内容

    IO流 javaio java 流

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

    Java-Io流,练习

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

    JAVA IO流技术

    处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。 节点流和处理流的关系: 节点流处于io操作的第一线,所有操作必须通过他们进行;处理流可以对节点流 进行包装,提高性能或...

    java中的io流详解

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

    java中IO流例子

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

    彻底明白java中的IO流

    Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,...在具体使用中很多初学者对Java.io包的使用非常含糊,本文将详细解说关于Java.io的使用…………

    javaIO流javaIO流javaIO流

    Java IO库包含了大量类和接口,它们分为四类主要流:字节流(Byte Streams)、字符流(Character Streams)、对象流(Object Streams)和套接字流(Socket Streams)。 1. 字节流:字节流处理单个字节的数据,包括...

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

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

    java中的IO流整理

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

    Java IO流 总结

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

    java零基础自学 之 JavaIO流处理

    java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理

    Java_IO流详解

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

    JavaIO流详细总结

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

    java_IO流的处理.ppt

    java_IO流的处理.ppt java_IO流的处理.ppt

    java之io流实例

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

    java 使用IO流实现文件的复制

    IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用Java的IO流来实现文件的复制。 首先,我们需要了解Java中的IO流体系。Java的IO库基于流的概念,流...

    Java IO 字节流 字符流

    Java IO库设计时考虑到了字节流和字符流之间的转换,为此提供了两个桥接流:InputStreamReader和OutputStreamWriter。InputStreamReader将字节流转换为字符流,它需要一个字符集作为参数来解码字节;...

    java_io流的处理

    本文档能够帮助你了解java io流的处理

Global site tag (gtag.js) - Google Analytics