Multitargeting output streams in Java

I want to show how I implemented filter output stream that send data to multiple underlying streams.
It is very easy.
I need output stream for this

import java.io.FilterOutputStream;import java.io.IOException;import java.io.OutputStream;public class MultitargetOutputStream extends FilterOutputStream{ private OutputStream outputStream_1; private OutputStream outputStream_2; public MultitargetOutputStream(OutputStream outputStream1,OutputStream outputStream2){ super(outputStream1); outputStream_1 = outputStream1; outputStream_2 = outputStream2; }  @Override  public void write(int b) throws IOException{ outputStream_1.write(b); outputStream_2.write(b); }  @Override  public void write(byte[] data,int offset,int length)  throws IOException{ outputStream_1.write(data,offset,length); outputStream_2.write(data,offset,length); }  @Override  public void flush() throws IOException{ outputStream_1.flush(); outputStream_2.flush(); }  @Override  public void close() throws IOException{ outputStream_1.close(); outputStream_2.close(); }}

As you can see I extended FilterOutputStream
Main class:

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class Main{ public static void main(String[] args) throws IOException{ String workDir = System.getProperty("user.dir"); File fileDir = new File(workDir,"src/com/thedevelopersinfo/tutorial/java/io/filterstreams/multitargetingoutputstreamexample"); File readFile = new File(fileDir,"Main.java"); FileInputStream fileInputStream = new FileInputStream(readFile); FileOutputStream fileOutputStream_1 = new FileOutputStream(new File(fileDir,"copy1.txt")); FileOutputStream fileOutputStream_2 = new FileOutputStream(new File(fileDir,"copy2.txt")); MultitargetOutputStream multitargetOutputStream = new MultitargetOutputStream(fileOutputStream_1,fileOutputStream_2); copyData(fileInputStream,multitargetOutputStream); fileInputStream.close(); multitargetOutputStream.close(); }  public static void copyData(InputStream inputStream,OutputStream outputStream) throws IOException{ BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); while (true){ int data = bufferedInputStream.read(); if (data == -1){break; }  bufferedOutputStream.write(data); }  bufferedOutputStream.flush(); }}

As you can see it is very easy. Try this example and you should find at directory where is located the Main.java 2 new files with Main.java’s content.

 

Download code from this post.

Share

No related posts.

Leave a Reply

  

  

  

You can use these HTML tags

<a href=""title=""><abbr title=""><acronym title=""><b><blockquote cite=""><cite><code><del datetime=""><em><i><q cite=""><strike><strong>

A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna,tincidunt vitae molestie nec,molestie at mi. Nulla nulla lorem,suscipit in posuere in,interdum non magna.