Skip to content

Commit c39b5b1

Browse files
committed
Pretty standard classes. A stream to count the number of bytes that
go by it (logging) and a stream for branching into two streams. git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/io/trunk@140295 13f79535-47bb-0310-9956-ffa450edef68
1 parent 5ed3ee1 commit c39b5b1

2 files changed

Lines changed: 196 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package org.apache.commons.io;
2+
3+
/* ====================================================================
4+
* The Apache Software License, Version 1.1
5+
*
6+
* Copyright (c) 2001 The Apache Software Foundation. All rights
7+
* reserved.
8+
*
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions
11+
* are met:
12+
*
13+
* 1. Redistributions of source code must retain the above copyright
14+
* notice, this list of conditions and the following disclaimer.
15+
*
16+
* 2. Redistributions in binary form must reproduce the above copyright
17+
* notice, this list of conditions and the following disclaimer in
18+
* the documentation and/or other materials provided with the
19+
* distribution.
20+
*
21+
* 3. The end-user documentation included with the redistribution,
22+
* if any, must include the following acknowledgment:
23+
* "This product includes software developed by the
24+
* Apache Software Foundation (http://www.apache.org/)."
25+
* Alternately, this acknowledgment may appear in the software itself,
26+
* if and wherever such third-party acknowledgments normally appear.
27+
*
28+
* 4. The names "Apache" and "Apache Software Foundation" and
29+
* "Apache Turbine" must not be used to endorse or promote products
30+
* derived from this software without prior written permission. For
31+
* written permission, please contact apache@apache.org.
32+
*
33+
* 5. Products derived from this software may not be called "Apache",
34+
* "Apache Turbine", nor may "Apache" appear in their name, without
35+
* prior written permission of the Apache Software Foundation.
36+
*
37+
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38+
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40+
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41+
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44+
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47+
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48+
* SUCH DAMAGE.
49+
* ====================================================================
50+
*
51+
* This software consists of voluntary contributions made by many
52+
* individuals on behalf of the Apache Software Foundation. For more
53+
* information on the Apache Software Foundation, please see
54+
* <http://www.apache.org/>.
55+
*/
56+
57+
import java.io.IOException;
58+
import java.io.OutputStream;
59+
import java.io.FilterOutputStream;
60+
61+
/**
62+
* Used in debugging, it counts the number of byts that pass
63+
* through it.
64+
*
65+
* @author <a href="mailto:bayard@apache.org">Henri Yandell</a>
66+
* @version $Id: CountingOutputStream.java,v 1.1 2002/02/23 04:29:53 bayard Exp $
67+
*/
68+
public class CountingOutputStream extends FilterOutputStream {
69+
70+
private int count;
71+
72+
public CountingOutputStream( OutputStream out ) {
73+
super(out);
74+
}
75+
76+
public void write(byte[] b) throws IOException {
77+
count += b.length;
78+
super.write(b);
79+
}
80+
81+
public void write(byte[] b, int off, int len) throws IOException {
82+
count += len;
83+
super.write(b, off, len);
84+
}
85+
86+
public void write(int b) throws IOException {
87+
count++;
88+
super.write(b);
89+
}
90+
91+
/**
92+
* The number of bytes that have passed through this stream.
93+
*/
94+
public int getCount() {
95+
return this.count;
96+
}
97+
98+
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package org.apache.commons.io;
2+
3+
/* ====================================================================
4+
* The Apache Software License, Version 1.1
5+
*
6+
* Copyright (c) 2001 The Apache Software Foundation. All rights
7+
* reserved.
8+
*
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions
11+
* are met:
12+
*
13+
* 1. Redistributions of source code must retain the above copyright
14+
* notice, this list of conditions and the following disclaimer.
15+
*
16+
* 2. Redistributions in binary form must reproduce the above copyright
17+
* notice, this list of conditions and the following disclaimer in
18+
* the documentation and/or other materials provided with the
19+
* distribution.
20+
*
21+
* 3. The end-user documentation included with the redistribution,
22+
* if any, must include the following acknowledgment:
23+
* "This product includes software developed by the
24+
* Apache Software Foundation (http://www.apache.org/)."
25+
* Alternately, this acknowledgment may appear in the software itself,
26+
* if and wherever such third-party acknowledgments normally appear.
27+
*
28+
* 4. The names "Apache" and "Apache Software Foundation" and
29+
* "Apache Turbine" must not be used to endorse or promote products
30+
* derived from this software without prior written permission. For
31+
* written permission, please contact apache@apache.org.
32+
*
33+
* 5. Products derived from this software may not be called "Apache",
34+
* "Apache Turbine", nor may "Apache" appear in their name, without
35+
* prior written permission of the Apache Software Foundation.
36+
*
37+
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38+
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40+
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41+
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44+
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47+
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48+
* SUCH DAMAGE.
49+
* ====================================================================
50+
*
51+
* This software consists of voluntary contributions made by many
52+
* individuals on behalf of the Apache Software Foundation. For more
53+
* information on the Apache Software Foundation, please see
54+
* <http://www.apache.org/>.
55+
*/
56+
57+
import java.io.IOException;
58+
import java.io.OutputStream;
59+
import java.io.FilterOutputStream;
60+
61+
/**
62+
* Classic splitter of OutputStream. Named after the unix 'tee'
63+
* command. It allows a stream to be branched off so there
64+
* are now two streams.
65+
*
66+
* @author <a href="mailto:bayard@apache.org">Henri Yandell</a>
67+
* @version $Id: TeeOutputStream.java,v 1.1 2002/02/23 04:29:53 bayard Exp $
68+
*/
69+
public class TeeOutputStream extends FilterOutputStream {
70+
71+
protected OutputStream branch;
72+
73+
public TeeOutputStream( OutputStream out, OutputStream branch ) {
74+
super(out);
75+
this.branch = branch;
76+
}
77+
78+
public synchronized void write(byte[] b, int off, int len) throws IOException {
79+
super.write(b, off, len);
80+
this.branch.write(b, off, len);
81+
}
82+
83+
public synchronized void write(int b) throws IOException {
84+
super.write(b);
85+
this.branch.write(b);
86+
}
87+
88+
public void flush() throws IOException {
89+
super.flush();
90+
branch.flush();
91+
}
92+
93+
public void close() throws IOException {
94+
super.close();
95+
branch.close();
96+
}
97+
98+
}

0 commit comments

Comments
 (0)