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 }
分享到:
相关推荐
Java的NIO(New IO)提供了一种更高效、更灵活的方式来处理I/O操作。通过选择器(Selector)和通道(Channel),NIO可以实现多路复用,使得单个线程可以处理多个连接,从而有效地控制并发连接的流量。同时,NIO的...
这种方式的核心在于系统之间的交互是通过发送消息来完成的,这些消息可以是简单的字节流或者复杂的Java对象。 - **TCP/IP vs UDP/IP**:TCP/IP提供了一种可靠的通信方式,它确保了数据的完整性和顺序性,适用于那些...
在Android开发中,对XML文件进行解析是非常基础且常用的功能之一。本文将详细介绍Android中解析XML文件的三种主要方式:DOM、SAX、Pull,并以DOM方式为例进行深入探讨。 #### 二、DOM方式解析XML **1. DOM解析简介*...
少儿编程scratch项目源代码文件案例素材-纸人伙计.zip
scratch少儿编程逻辑思维游戏源码-忍者罗伊 V5.zip
scratch少儿编程逻辑思维游戏源码-跑和枪.zip
前端开发_基于jQuery和EasyUI框架_企业级Web应用UI组件库与后台管理系统模板_提供GPL开源版本和商业授权版本的双重授权模式_适用于快速构建响应式管理后台和复杂数据可
少儿编程scratch项目源代码文件案例素材-纸格通关 云变量.zip
微信机器人开发_Wechaty框架_百度云主机部署_自然语言处理_消息自动化处理_多媒体文件管理_聊天记录持久化_表情包导出_语音视频自动保存_文件管理系统集成_跨平台数据同步_个
少儿编程scratch项目源代码文件案例素材-钻机机器人.zip
少儿编程scratch项目源代码文件案例素材-作战基地.zip
云计算_微服务分布式架构SpringCloudSpringBootDubboVuejs_互联网云快速开发框架敏捷开发系统代码生成工作流CMS图表统计地图统计_免费开源JAVA企业
scratch少儿编程逻辑思维游戏源码-日落塔.zip
Tobapuww_GPT-Recovery-Files_12888_1745866661386
少儿编程scratch项目源代码文件案例素材-战斗竞技场.zip
scratch少儿编程逻辑思维游戏源码-球球大作战.zip
聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发,安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD,TB等业务定制,子账号业务逻辑API 非常详细,方便内置对接! IP白名单 业务逻辑 支持IP白名单,黑名单,全局白名单,全局黑名单,保障系统的安全。 接口验签名 采用支付宝RSA加密接口方式,防止篡改数据,导致对账困难,资金大量损失,无故少钱 对接灵活 全部对接参数灵活操作 风控完善 轮询、交易金额、随机金额、最大金额、最小金额等 测试环境: Nginx+PHP7.0+MySQL5.6 网站运行目录:/public 伪静态设置为:thinkphp规则 数据库信息修改路径:/application/database.php
校园社交服务_微信小程序云开发_公告资讯失物招领二手交易兼职招聘表白墙_为高校师生提供一站式校园生活服务平台包含校园动态通知课程表查询失物发布与认领二手物品交易平台兼职信息发布与求
yinghuayu2377_myFTPDemo_32152_1745866651913
scratch少儿编程逻辑思维游戏源码-魔法球.zip