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

java中的IO:节点流的使用

阅读更多

目录

1.文件字节流
2.文件字符流
3.字节数组流
4.管道流

 

1.文件字节流
1.1FileIputStream输入流
read() 从此输入流读取一个字节,返回读取的数据字节,达到文件末尾则返回-1.
read(Byte[] b) 从此输入流读取b.length个字节存入b中,返回读取到的有效字节个数,达到文件末尾则返回-1.
close() 关闭此输入流并释放资源
1.2FileOutputSteam输出流
write(int b) 将指定字节写入到此输出流
write(byte[] b, int off, int len) 将指定byte数组中从off开始的len个字节写入到此输出流
flush() 刷新此输出流并强制写出所有缓冲的输出字节
close() 关闭此输出流并释放资源
1.3实现文件复制
public class FileStreamDemo {

	// 每次读写一个字节
	public static void copy1(File src, File dest) throws IOException {
		FileInputStream fis = new FileInputStream(src);
		FileOutputStream fos = new FileOutputStream(dest);
		int value = fis.read();
		while (value != -1) {
			fos.write(value);
			value = fis.read();
		}
		fos.close();
		fis.close();
	}

	// 每次读写字节数组
	public static void copy2(File src, File dest) throws IOException {
		FileInputStream fis = new FileInputStream(src);
		FileOutputStream fos = new FileOutputStream(dest);
		byte[] temp = new byte[1 << 15];
		int value = fis.read(temp);
		while (value != -1) {
			fos.write(temp, 0, value);
			value = fis.read(temp);
		}
		fos.close();
		fis.close();
	}

	public static void main(String[] args) throws IOException {
		copy1(new File("c:\\a1.txt"), new File("d:\\b1.txt"));
		copy2(new File("c:\\a2.jpg"), new File("d:\\b2.jpg"));
	}
}

 

2.文件字符流

字符流与字节流的用法基本相同,是为了更便捷的读写文字,但是对于其他资源或文件读写会发生错误.利用字符流实现文件复制:

public class File_Reader_Writer {

	// 通过字符流复制文本文件
	public static void copy3(File src, File dest) throws IOException {
		FileReader fr = new FileReader(src);
		FileWriter fw = new FileWriter(dest);
		// 通过char类型数组读写
		char[] temp = new char[1 << 15];
		int value = fr.read(temp);
		while (value != -1) {
			fw.write(temp, 0, value);
			value = fr.read(temp);
		}
		fw.close();
		fr.close();
	}

	public static void main(String[] args) throws IOException {
		copy3(new File("c:\\a3.txt"), new File("d:\\b3.txt"));
	}
}

 

3.字节数组流
3.1字节数组输入流ByteArrayInputStream

面向数组,读方法与文件流相似.例:

public class ByteArrayInputStreamDemo {

	public static void main(String[] args) throws IOException {
		byte[] b = new byte[] { 23, 4, 54, 46, 78, 46, 78, 34, 84, 4 };
		ByteArrayInputStream bis = new ByteArrayInputStream(b);
		int temp = 0;
		while ((temp = bis.read()) != -1) {
			System.out.println(temp);
		}
	}
}
3.2字节数组输入流ByteArrayOutputStream

写方法除了write()以外,还提供了toByteArray()的方法,将输出流中的有效内容复制到该数组中.例:

public class ByteArrayOutputStreamDemo {

	public static void main(String[] args) throws IOException {
		final Random r = new Random();
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		for (int i = 0; i < 10; i++) {
			bos.write(r.nextInt(100));
		}
		byte[] b = bos.toByteArray();
		System.out.println(Arrays.toString(b));
	}
}

 

4.管道流

管道流常用于线程,并且输入流和输出流需要建立联系.例:

public class PipedStreamDemo {

	public static void main(String[] args) throws Exception {
		// 创建线程任务
		Send s = new Send();
		Receive r = new Receive();
		// 连接两个管道流
		s.getOut().connect(r.getIn());
		// 启动线程
		new Thread(s).start();
		new Thread(r).start();
	}
}

class Send implements Runnable {
	private PipedOutputStream out = new PipedOutputStream();

	public PipedOutputStream getOut() {
		return out;
	}

	@Override
	public void run() {
		String message = "This is a PipedStream";
		try {
			out.write(message.getBytes());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

class Receive implements Runnable {
	private PipedInputStream in = new PipedInputStream();

	public PipedInputStream getIn() {
		return in;
	}

	@Override
	public void run() {
		byte[] b = new byte[1 << 10];
		int length = 0;
		try {
			length = in.read(b);
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(new String(b, 0, length));
	}
}

 运行结果:This is a PipedStream

1
1
分享到:
评论

相关推荐

    Java基础篇:IO流.pdf

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

    JAVA IO流技术

    3. 简单的IO流程序示例:以文件读取为例,使用`FileInputStream`作为节点流从文件读取数据。通常,我们会使用循环读取数据,并在读取完成后关闭流。在更标准的实践中,我们使用`StringBuilder`存储读取的字符,并在...

    Java 的 IO流笔记.md

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

    java中的IO流整理

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

    JAVA程序设计:第14章 Java流式IO编程.ppt

    * 节点流:FileReader、FileWriter、FileInputStream、FileOutputStream、Memory Array、CharArrayReader、CharArrayWriter、ByteArrayInputStream、ByteArrayOutputStream、Memory String、StringReader、...

    Java IO流 总结

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

    java中的IO流操作大全

    在Java中,IO流操作是用于处理输入与输出的抽象机制,它提供了在不同的数据源和目标之间传输数据的手段。流的概念最早起源于UNIX系统中的管道概念,是一个连续的数据流,可以理解为水流,从源端流向目的端。 一、流...

    java_IO流的处理.ppt

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

    驾驭Java文件与IO:深入探索数据流的奥秘

    3. **节点流**: 直接连接到文件等数据源的低级流,如上所述的`FileInputStream`、`FileOutputStream`、`FileReader`和`FileWriter`等。 4. **过滤流**: 包装其他流以增加额外的功能,如: - `BufferedReader`: 对`...

    JAVA_IO操作总结——节点流和处理流.pdf

    ### JAVA IO操作总结——节点流和处理流 #### 一、概述 在Java中,输入/输出...以上内容总结了Java中节点流和处理流的基本概念及其使用方法。通过合理利用这两种类型的流,可以高效地完成各种复杂的IO操作任务。

    Java_IO.rar_IO流 java_java io流

    在"Java_IO.rar"这个压缩包中,包含了一个名为"Java_IO操作_(读写、追加、删除、移动、复制、修改).docx"的文档,该文档详细介绍了如何使用Java的IO流进行各种文件操作。以下是对这些操作的详细介绍: 1. **读取...

    java IO流总结.md

    java I/O流的总结 ...节点流:直接从数据源或目的地读写数据 处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。......

    java中的IO的基础教学(1)

    Java中的IO(输入/输出)系统是编程中不可或缺的一部分,特别是在处理数据的读取、写入、传输和存储时。本教程将深入讲解Java IO流的基础知识,包括其概念、分类、常用类以及如何在实际编程中应用。 一、IO流的概念...

    Java IO知识点

    进一步细分,Java IO还包括节点流和处理流。节点流是直接与数据源或目的地连接的流,如FileInputStream和FileWriter。处理流则建立在其他流之上,提供缓冲、转换或格式化等功能,如BufferedReader和BufferedWriter。...

    java IO流详解

    - 节点流:直接与设备交互,效率较低。 - 包装流:对节点流进行封装,提高读写效率,例如缓冲流。 #### 二、InputStream/OutputStream - **InputStream**:所有字节输入流的超类,提供了基本的输入功能。 - **...

    java io 流,文件读取操作

    Java IO 流是 Java 语言中的一种基本输入/输出机制,它提供了多种方式来处理输入/输出操作。在 Java 中,IO 流可以分为两大类:字节流和字符流。字节流主要用于处理二进制数据,而字符流主要用于处理文本数据。 一...

    Java中IO解读与使用实例-动力节点共17页.pdf

    在Java的IO体系中,主要有两种流:字节流(Byte Stream)和字符流(Character Stream)。字节流处理的是8位的数据,如图片、音频等非文本文件;而字符流处理的是16位Unicode字符,常用于文本文件操作。 1. **字节流...

    javaIO流知识大总结

    Java IO 流是Java平台中的核心概念,它用于在不同数据源之间进行数据传输,如文件、网络、内存等。Java IO系统提供了丰富的类库,使得开发者能够方便地处理输入和输出操作。在这个大总结中,我们将深入探讨Java IO流...

    javaio流学习总结.pdf

    JavaIO流是Java语言中最基本的输入/输出机制,它提供了多种方式来读取和写入数据。下面是JavaIO流的学习总结。 一、 IO流的分类 IO流可以从不同的角度进行分类,包括: * 按流的方向分为:输入流和输出流 * 按流...

    超详细资源JAVA中的IO流

    超详细资源JAVA中的IO流 Java中的IO流是一个重要的组成部分,也是我们经常打交道的。下面我们来详细了解Java IO流的知识点。 IO流的特点 IO流有以下几个特点: 1. 先进先出:最先写入输出流的数据最先被输入流...

Global site tag (gtag.js) - Google Analytics