Java/File Input Output/DataOutputStream

Материал из Java эксперт
Перейти к: навигация, поиск

Create DataOutputStream from FileOutputStream and Write various types of data

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; class DataOutputStreamDemo {

 public static void main(String args[]) throws Exception {
   FileOutputStream fos = new FileOutputStream(args[0]);
   DataOutputStream dos = new DataOutputStream(fos);
   // Write various types of data
   dos.writeBoolean(false);
   dos.writeByte(Byte.MAX_VALUE);
   dos.writeChar("A");
   dos.writeDouble(Double.MAX_VALUE);
   dos.writeFloat(Float.MAX_VALUE);
   dos.writeInt(Integer.MAX_VALUE);
   dos.writeLong(Long.MAX_VALUE);
   dos.writeShort(Short.MAX_VALUE);
   fos.close();
 }

}


 </source>
   
  
 
  



DataInputStream, DataOutputStream

   <source lang="java">
 

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; class DOSDISDemo {

 public static void main(String[] args) throws Exception {
   DataOutputStream dos = null;
   FileOutputStream fos = new FileOutputStream("data.dat");
   dos = new DataOutputStream(fos);
   dos.writeInt(256);
   dos.writeDouble(Math.PI);
   dos.writeUTF("Java");
   DataInputStream dis = null;
   FileInputStream fis = new FileInputStream("data.dat");
   dis = new DataInputStream(fis);
   System.out.println(dis.readInt());
   System.out.println(dis.readDouble());
   System.out.println(dis.readUTF());
 }

}


 </source>
   
  
 
  



DataInputStream out of FileInputStream, DataOutputStream out of FileOutputStream

   <source lang="java">
 

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ 

import java.io.DataInput; import java.io.DataInputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class CheckedDIDemo {

   public static void main(String[] args) throws IOException {
       Adler32 inChecker = new Adler32();
       Adler32 outChecker = new Adler32();
       CheckedDataInput in = null;
       CheckedDataOutput out = null;
       try {
           in = new CheckedDataInput(new DataInputStream(new FileInputStream("xanadu.txt")),inChecker);
           out = new CheckedDataOutput(new DataOutputStream(new FileOutputStream("outagain.txt")),outChecker);
       } catch (FileNotFoundException e) {
           System.err.println("CheckedIOTest: " + e);
           System.exit(-1);
       } catch (IOException e) {
           System.err.println("CheckedIOTest: " + e);
           System.exit(-1);
       }
       boolean EOF = false;
       while (!EOF) {
           try {
               int c = in.readByte();
               out.write(c);
           } catch (EOFException e) {
               EOF = true;
           }
       }
       System.out.println("Input stream check sum: " +
              in.getChecksum().getValue());
       System.out.println("Output stream check sum: " +
              out.getChecksum().getValue());
   }

} /*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ 
class Adler32 implements Checksum {
   private int value = 1;
   /*
    * BASE is the largest prime number smaller than 65536
    * NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
    */
   private static final int BASE = 65521;
   private static final int NMAX = 5552;
   /**
    * Update current Adler-32 checksum given the specified byte.
    */
   public void update(int b) {
       int s1 = value & 0xffff;
       int s2 = (value >> 16) & 0xffff;
       s1 += b & 0xff;
       s2 += s1;
       value = ((s2 % BASE) << 16) | (s1 % BASE);
   }
   /**
    * Update current Adler-32 checksum given the specified byte array.
    */
   public void update(byte[] b, int off, int len) {
       int s1 = value & 0xffff;
       int s2 = (value >> 16) & 0xffff;
       while (len > 0) {
           int k = len < NMAX ? len : NMAX;
           len -= k;
           while (k-- > 0) {
               s1 += b[off++] & 0xff;
               s2 += s1;
           }
           s1 %= BASE;
           s2 %= BASE;
       }
       value = (s2 << 16) | s1;
   }
   /**
    * Reset Adler-32 checksum to initial value.
    */
   public void reset() {
       value = 1;
   }
   /**
    * Returns current checksum value.
    */
   public long getValue() {
       return (long)value & 0xffffffff;
   }

}

/*
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */ 
interface Checksum {
    /**
     * Updates the current checksum with the specified byte.
     */
    public void update(int b);
    /**
     * Updates the current checksum with the specified array of bytes.
     */
    public void update(byte[] b, int off, int len);
    /**
     * Returns the current checksum value.
     */
    public long getValue();
    /**
     * Resets the checksum to its initial value.
     */
    public void reset();
}
/*
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */ 
/*
 * This class is an example only. A "final" version of
 * this class should implement the DataOutput interface
 * and provide implementations for the methods declared in
 * DataOutput.
 */
 class CheckedDataOutput {
    private Checksum cksum;
    private DataOutput out;
    public CheckedDataOutput(DataOutput out, Checksum cksum) {
        this.cksum = cksum;
        this.out = out;
    }
    public void write(int b) throws IOException {
        out.write(b);
        cksum.update(b);
    }
    public void write(byte[] b) throws IOException {
        out.write(b, 0, b.length);
        cksum.update(b, 0, b.length);
    }
    public void write(byte[] b, int off, int len) throws IOException {
        out.write(b, off, len);
        cksum.update(b, off, len);
    }
    public Checksum getChecksum() {
        return cksum;
    }
}
 /*
  * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  *
  *   - Redistributions of source code must retain the above copyright
  *     notice, this list of conditions and the following disclaimer.
  *
  *   - Redistributions in binary form must reproduce the above copyright
  *     notice, this list of conditions and the following disclaimer in the
  *     documentation and/or other materials provided with the distribution.
  *
  *   - Neither the name of Sun Microsystems nor the names of its
  *     contributors may be used to endorse or promote products derived
  *     from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */ 
 /* 
  * This class is an example only. A "final" version of 
  * this class should implement the DataInput interface
  * and provide implementations for the methods declared in
  * DataInput.
  */ 
 class CheckedDataInput {
     private Checksum cksum;
     private DataInput in;
     public CheckedDataInput(DataInput in, Checksum cksum) {
         this.cksum = cksum;
         this.in = in;
     }
     public byte readByte() throws IOException {
         byte b = in.readByte();
         cksum.update(b);
         return b;
     }
     public void readFully(byte[] b) throws IOException {
         in.readFully(b, 0, b.length);
         cksum.update(b, 0, b.length);
     }
     public void readFully(byte[] b, int off, int len) throws IOException {
         in.readFully(b, off, len);
         cksum.update(b, off, len);
     }
     public Checksum getChecksum() {
         return cksum;
     }
 }
  
   
 </source>
   
  
 
  



DataOutputStream and DataInputStream: write and read primitive data type to a file

   <source lang="java">
 

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception{
   int idA = 1;
   String nameA = "City";
   int populationA = 5;
   float tempA = 1.0f;
   int idB = 2;
   String nameB = "S";
   int populationB = 2;
   float tempB = 1.45f;
   FileOutputStream fos = new FileOutputStream("cities.dat");
   DataOutputStream dos = new DataOutputStream(fos);
   dos.writeInt(idA);
   dos.writeUTF(nameA);
   dos.writeInt(populationA);
   dos.writeFloat(tempA);
   dos.writeInt(idB);
   dos.writeUTF(nameB);
   dos.writeInt(populationB);
   dos.writeFloat(tempB);
   dos.flush();
   dos.close();
   FileInputStream fis = new FileInputStream("cities.dat");
   DataInputStream dis = new DataInputStream(fis);
   int cityId = dis.readInt();
   System.out.println("City Id: " + cityId);
   String cityName = dis.readUTF();
   System.out.println("City Name: " + cityName);
   int cityPopulation = dis.readInt();
   System.out.println("City Population: " + cityPopulation);
   float cityTemperature = dis.readFloat();
   System.out.println("City Temperature: " + cityTemperature);
 }

}


 </source>
   
  
 
  



Determine number of bytes written to DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/Bytes.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   dos.writeBytes("this is a test");
   int bytesWritten = dos.size();
   System.out.println("Total " + bytesWritten + " bytes are written to stream.");
   dos.close();
 }

}


 </source>
   
  
 
  



Flush output stream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/WriteByte.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   dos.writeBytes("this is a test");
   dos.flush();
   dos.close();
 }

}


 </source>
   
  
 
  



new DataOutputStream(new BufferedOutputStream(new FileOutputStream()))

   <source lang="java">
 

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class DataStreams {

 static final String dataFile = "invoicedata";
 static final double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 };
 static final int[] units = { 12, 8, 13, 29, 50 };
 static final String[] descs = { "Java T-shirt", "Java Mug",
     "Duke Juggling Dolls", "Java Pin", "Java Key Chain" };
 public static void main(String[] args) throws IOException {
   DataOutputStream out = null;
   try {
     out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(
         dataFile)));
     for (int i = 0; i < prices.length; i++) {
       out.writeDouble(prices[i]);
       out.writeInt(units[i]);
       out.writeUTF(descs[i]);
     }
   } finally {
     out.close();
   }
   DataInputStream in = null;
   double total = 0.0;
   try {
     in = new DataInputStream(new BufferedInputStream(new FileInputStream(
         dataFile)));
     double price;
     int unit;
     String desc;
     try {
       while (true) {
         price = in.readDouble();
         unit = in.readInt();
         desc = in.readUTF();
         System.out.format("You ordered %d units of %s at $%.2f%n", unit,
             desc, price);
         total += unit * price;
       }
     } catch (EOFException e) {
     }
     System.out.format("For a TOTAL of: $%.2f%n", total);
   } finally {
     in.close();
   }
 }

}


 </source>
   
  
 
  



Provide a debug trace of the stuff thats being written out into the DataOutputStream

   <source lang="java">

/*

* The contents of this file are subject to the terms 
* of the Common Development and Distribution License 
* (the "License").  You may not use this file except 
* in compliance with the License.
* 
* You can obtain a copy of the license at 
* glassfish/bootstrap/legal/CDDLv1.0.txt or 
* https://glassfish.dev.java.net/public/CDDLv1.0.html. 
* See the License for the specific language governing 
* permissions and limitations under the License.
* 
* When distributing Covered Code, include this CDDL 
* HEADER in each file and include the License file at 
* glassfish/bootstrap/legal/CDDLv1.0.txt.  If applicable, 
* add the following below this CDDL HEADER, with the 
* fields enclosed by brackets "[]" replaced with your 
* own identifying information: Portions Copyright [yyyy] 
* [name of copyright owner]
*/

/*

* @(#)TraceOutputStream.java 1.5 05/08/29
*
* Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
*/

// revised from sun mail util import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; /**

* This class is a subclass of DataOutputStream that copies the
* data being written into the DataOutputStream into another output
* stream. This class is used here to provide a debug trace of the
* stuff thats being written out into the DataOutputStream.
*
* @author John Mani
*/

public class TraceOutputStream extends FilterOutputStream {

   private boolean trace = false;
   private boolean quote = false;
   private OutputStream traceOut;
   /**
    * Creates an output stream filter built on top of the specified
    * underlying output stream.
    *
    * @param   out   the underlying output stream.
    * @param traceOut  the trace stream.
    */
   public TraceOutputStream(OutputStream out, OutputStream traceOut) {
 super(out);
 this.traceOut = traceOut;
   }
   /**
    * Set the trace mode.
    */
   public void setTrace(boolean trace) {
 this.trace = trace;
   }
   /**
    * Set quote mode.
    * @param quote the quote mode
    */
   public void setQuote(boolean quote) {
 this.quote = quote;
   }
   /**
    * Writes the specified byte to this output stream.
    * Writes out the byte into the trace stream if the trace mode
    * is true
    */
   public void write(int b) throws IOException {
 if (trace) {
     if (quote)
   writeByte(b);
     else
   traceOut.write(b);
 }
 out.write(b);
   }
     
   /**
    * Writes b.length bytes to this output stream.
    * Writes out the bytes into the trace stream if the trace
    * mode is true
    */
   public void write(byte b[], int off, int len) throws IOException {
 if (trace) {
     if (quote) {
   for (int i = 0; i < len; i++)
       writeByte(b[off + i]);
     } else
   traceOut.write(b, off, len);
 }
 out.write(b, off, len);
   }
   /**
    * Write a byte in a way that every byte value is printable ASCII.
    */
   private final void writeByte(int b) throws IOException {
 b &= 0xff;
 if (b > 0x7f) {
     traceOut.write("M");
     traceOut.write("-");
     b &= 0x7f;
 }
 if (b == "\r") {
     traceOut.write("\\");
     traceOut.write("r");
 } else if (b == "\n") {
     traceOut.write("\\");
     traceOut.write("n");
     traceOut.write("\n");
 } else if (b == "\t") {
     traceOut.write("\\");
     traceOut.write("t");
 } else if (b < " ") {
     traceOut.write("^");
     traceOut.write("@" + b);
 } else {
     traceOut.write(b);
 }
   }

}

 </source>
   
  
 
  



Write boolean to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/WriteBoolean.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   boolean b = false;
   dos.writeBoolean(b);
   dos.close();
 }

}


 </source>
   
  
 
  



Write byte to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/WriteByte.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   int i = 1;
   dos.writeByte(i);
   dos.close();
 }

}


 </source>
   
  
 
  



Write char to a file using DataOutputStream

   <source lang="java">
 
      

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/WriteChar.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   int ch = 65;
   dos.writeChar(ch);
   dos.close();
 }

}


 </source>
   
  
 
  



Write different data types with DataOutputStream

   <source lang="java">
 

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class DataStreams {

 static final String dataFile = "invoicedata";
 static final double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 };
 static final int[] units = { 12, 8, 13, 29, 50 };
 static final String[] descs = { "Java T-shirt", "Java Mug",
     "Duke Juggling Dolls", "Java Pin", "Java Key Chain" };
 public static void main(String[] args) throws IOException {
   DataOutputStream out = null;
   try {
     out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(
         dataFile)));
     for (int i = 0; i < prices.length; i++) {
       out.writeDouble(prices[i]);
       out.writeInt(units[i]);
       out.writeUTF(descs[i]);
     }
   } finally {
     out.close();
   }
   DataInputStream in = null;
   double total = 0.0;
   try {
     in = new DataInputStream(new BufferedInputStream(new FileInputStream(
         dataFile)));
     double price;
     int unit;
     String desc;
     try {
       while (true) {
         price = in.readDouble();
         unit = in.readInt();
         desc = in.readUTF();
         System.out.format("You ordered %d units of %s at $%.2f%n", unit,
             desc, price);
         total += unit * price;
       }
     } catch (EOFException e) {
     }
     System.out.format("For a TOTAL of: $%.2f%n", total);
   } finally {
     in.close();
   }
 }

}


 </source>
   
  
 
  



Write float to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   String strFilePath = "C:/Float.txt";
   FileOutputStream fos = new FileOutputStream(strFilePath);
   DataOutputStream dos = new DataOutputStream(fos);
   float f = 3.14f;
   dos.writeFloat(f);
   dos.close();
 }

}


 </source>
   
  
 
  



Write int to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception{
   FileOutputStream fos = new FileOutputStream("C:/Int.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   int i = 100;
   dos.writeInt(i);
   dos.close();
 }

}


 </source>
   
  
 
  



Write long to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/Long.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   long l = 65;
   dos.writeLong(l);
   dos.close();
 }

}


 </source>
   
  
 
  



Write short to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/Short.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   short s = 1;
   dos.writeShort(s);
   dos.close();
 }

}


 </source>
   
  
 
  



Write short type value with DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; class Main {

 public static void main(String args[]) throws Exception {
   FileOutputStream fos = new FileOutputStream(args[0]);
   DataOutputStream dos = new DataOutputStream(fos);
   dos.writeShort(1);
   fos.close();
 }

}


 </source>
   
  
 
  



Write String as bytes to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception{
   FileOutputStream fos = new FileOutputStream("C:/Bytes.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   String str = "This is a test!";
   dos.writeBytes(str);
   dos.close();
 }

}


 </source>
   
  
 
  



Write String as characters to a file using DataOutputStream

   <source lang="java">
 

import java.io.DataOutputStream; import java.io.FileOutputStream; public class Main {

 public static void main(String[] args) throws Exception {
   FileOutputStream fos = new FileOutputStream("C:/Chars.txt");
   DataOutputStream dos = new DataOutputStream(fos);
   dos.writeChars("This is a test");
   dos.close();
 }

}


 </source>