01 package org.richin.io.Stream.util;
02 import java.io.BufferedInputStream;
03 import java.io.BufferedOutputStream;
04 import java.io.FileInputStream;
05 import java.io.FileOutputStream;
06 import java.io.IOException;
07 import java.io.InputStream;
08 import java.io.OutputStream;
09 /**
10 * 对流进行分流,同时将一个输入流写入多个输出流
11 * @author Administrator
12 *
13 */
14 public class TeeOutputStream extends OutputStream {
15 private OutputStream out1;
16 private OutputStream out2;
17 public TeeOutputStream(OutputStream stream1, OutputStream stream2)
18 {
19 //调用父类的构造方法,传入需要过滤的流
20 //super(stream1);
21 out1 = stream1;
22 out2 = stream2;
23 }
24 //重写write方法
25 public void write(int b) throws IOException
26 {
27 out1.write(b);
28 out2.write(b);
29 }
30 //重写write方法
31 public void write(byte[] data, int offset, int length) throws IOException
32 {
33 out1.write(data, offset, length);
34 out2.write(data, offset, length);
35 }
36 //重写flush方法
37 public void flush() throws IOException
38 {
39 out1.flush();
40 out2.flush();
41 }
42 //重写close方法
43 public void close() throws IOException
44 {
45 out1.close();
46 out2.close();
47 }
48 public static void copy(InputStream in, OutputStream out)
49 throws IOException {
50 // 缓冲流
51 BufferedInputStream bin = new BufferedInputStream(in);
52 BufferedOutputStream bout = new BufferedOutputStream(out);
53 while (true) {
54 int datum = bin.read();
55 if (datum == -1)
56 break;
57 bout.write(datum);
58 }
59 // 刷新缓冲区
60 bout.flush();
61 }
62 //main方法
63 public static void main(String[] args) throws IOException {
64 FileInputStream fin = new FileInputStream("E:\\gzml\\gongzhens\\yaxi\\设计稿\\快递.rar");
65 FileOutputStream fout1 = new FileOutputStream("D:/快递.rar");
66 FileOutputStream fout2 = new FileOutputStream("e:/快递.rar");
67 TeeOutputStream tout = new TeeOutputStream(fout1, fout2);
68 TeeOutputStream.copy(fin, tout);
69 fin.close();
70 tout.close();
71 }
72 }
分享到:
相关推荐
字符流与字节流之间可以通过转换流进行互转。`InputStreamReader`和`OutputStreamWriter`就是这样的转换流,它们分别将字节流转换为字符流,反之亦然。 六、对象序列化流(Object Stream) Java还提供了一种特殊的...
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...
在实际开发中,我们通常会根据需求选择合适的流进行组合,以实现特定的数据传输任务。例如,当我们需要从网络下载文件时,可以使用SocketInputStream作为输入流,然后通过BufferedInputStream提高读取效率,最后用...
Java 中 IO 是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。在项目开发中,IO 是非常基础的部分,在面试当中经常出现。对于初学者而言,IO 部分是容易忽略的内容,求职者一定要掌握该...
JAVA_IO流学习总结
java基础中的IO流是Java提供的一套用于文件读写操作的流式API,它包括字节流和字符...这些知识对于Java初学者来说是非常重要的,它们不仅涉及到文件的基本操作,还包括了对IO流深入的理解,为后续开发打下坚实的基础。
Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream 和 OutputStream 两大...
Java中的IO流是Java平台...在实际项目中,我们经常会遇到需要对文件进行读写、在网络间传输数据或处理用户输入的情况,这时候,Java的IO流就显得尤为重要。通过不断实践和学习,我们可以更加深入地掌握这个强大的工具。
在Java编程语言中,IO(Input/Output)流是一组用于处理输入和输出操作的类和接口,它们允许我们读取和写入数据到各种类型的源和目标,如文件、网络连接、内存缓冲区等。Java IO流系统分为字节流和字符流两大类。 ...
关于java的io流叙述,让程序的内存和外界交换数据
- **处理流**:不直接与数据源或目的地相连,而是对其他流进行封装,以提高性能或增加功能。这类流被称为“包装流”,如`BufferedInputStream`, `BufferedReader`等。 #### 七、Java中的IO流体系结构 Java的IO流...
Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,因为它提供了处理输入(读取)和输出(写入)的机制,无论是从键盘、文件、网络还是其他数据源。在本文中,...
这里我们以字节流为例,使用`java.io.FileInputStream`作为读取源文件的输入流,`java.io.FileOutputStream`作为写入目标文件的输出流。 下面是一个简单的文件复制示例: ```java import java.io.*; public class...
Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地...在实际编程中,根据需求选择适当的流类型,结合处理流进行优化,可以构建出高效、灵活的IO解决方案。
Java IO流处理是Java编程中一个非常重要的概念,它用于在不同数据源之间传输数据,如文件、网络、内存等。在Java中,IO流分为两大类:输入流(Input Stream)和输出流(Output Stream),它们分别用于数据的读取和...
### Java IO流基础知识点 #### 一、IO流概述 - **定义**:在Java中,IO流(Input/Output Streams)是用来处理输入输出的基本工具。流是一种有序的数据集合,通常涉及从源到目的地的数据传输过程。源可以是文件、...
自已写了一个JAVA IO流的增删改查操作, 算是对IO的总结吧,初学者可以看下!
Java调用IO流是进行数据输入输出操作的核心技术之一,特别是在处理文件、网络通信和程序间数据传递时不可或缺。在Java中,IO流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节...
总的来说,Java IO流是Java程序进行输入输出操作的基础,无论是读取配置文件、处理用户输入、还是与其他系统交换数据,都离不开IO流。通过深入学习和实践,开发者可以有效地管理和控制程序的数据流动,从而实现各种...
Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来被 Java 语言所采用。 ...