Java/File Input Output/DataInputStream

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

Check the class version

   <source lang="java">

import java.io.DataInputStream; import java.io.FileInputStream; import java.io.IOException; public class Main {

 public static void main(String[] args) throws IOException {
   DataInputStream in = new DataInputStream(new FileInputStream("Main.class"));
   int start = in.readInt();
   if (start != 0xcafebabe) {
     System.out.println("not valid");
   }
   in.close();
   System.out.println(in.readUnsignedShort()+"/"+in.readUnsignedShort());
   
 }

}

 </source>
   
  
 
  



Create DataInputStream from FileInputStream and read different types of data

   <source lang="java">

import java.io.DataInputStream; import java.io.FileInputStream; class DataInputStreamDemo {

 public static void main(String args[]) throws Exception {
   FileInputStream fis = new FileInputStream(args[0]);
   DataInputStream dis = new DataInputStream(fis);
   System.out.println(dis.readBoolean());
   System.out.println(dis.readByte());
   System.out.println(dis.readChar());
   System.out.println(dis.readDouble());
   System.out.println(dis.readFloat());
   System.out.println(dis.readInt());
   System.out.println(dis.readLong());
   System.out.println(dis.readShort());
   fis.close();
 }

}

 </source>
   
  
 
  



DataOutputStream and DataInputStream: read and write by data types

   <source lang="java">

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

 public static void main(String[] atgs) throws Exception {
   DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("java.txt")));
   out.writeUTF("");
   out.writeBytes("a");
   out.writeChars("aaa");
   out.close();
   DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("java.txt")));
   System.out.println(in.readUTF());
   byte[] buf = new byte[1024];
   int len = in.read(buf);
   System.out.println(new String(buf, 0, len));
   in.close();
 }

}

 </source>
   
  
 
  



new DataInputStream(new BufferedInputStream(new FileInputStream()))

   <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>
   
  
 
  



Read boolean from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/n.txt");
   DataInputStream din = new DataInputStream(fin);
   boolean b = din.readBoolean();
   System.out.println("boolean : " + b);
   din.close();
 }

}

 </source>
   
  
 
  



Read byte array from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/Array.txt");
   DataInputStream din = new DataInputStream(fin);
   byte b[] = new byte[10];
   din.read(b);
   din.close();
 }

}

 </source>
   
  
 
  



Read byte from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/Byte.txt");
   DataInputStream din = new DataInputStream(fin);
   byte b = din.readByte();
   System.out.println("byte : " + b);
   din.close();
 }

}

 </source>
   
  
 
  



Read char from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception{
   FileInputStream fin = new FileInputStream("C:/Char.txt");
   DataInputStream din = new DataInputStream(fin);
   char ch = din.readChar();
   System.out.println("Char : " + ch);
   din.close();
 }

}

 </source>
   
  
 
  



Read different data types from DataInputStream

   <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>
   
  
 
  



Read double from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/read.txt");
   DataInputStream din = new DataInputStream(fin);
   double d = din.readDouble();
   System.out.println("Double : " + d);
   din.close();
 }

}

 </source>
   
  
 
  



Read float from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/Float.txt");
   DataInputStream din = new DataInputStream(fin);
   float f = din.readFloat();
   System.out.println("float : " + f);
   din.close();
 }

}

 </source>
   
  
 
  



Read int from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/Int.txt");
   DataInputStream din = new DataInputStream(fin);
   int i = din.readInt();
   System.out.println("int : " + i);
   din.close();
 }

}

 </source>
   
  
 
  



Read long from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/Long.txt");
   DataInputStream din = new DataInputStream(fin);
   long l = din.readLong();
   System.out.println("long : " + l);
   din.close();
 }

}

 </source>
   
  
 
  



Read short from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/Short.txt");
   DataInputStream din = new DataInputStream(fin);
   short s = din.readShort();
   System.out.println("short : " + s);
   din.close();
 }

}

 </source>
   
  
 
  



Read short type of data with DataInputStream

   <source lang="java">

import java.io.DataInputStream; import java.io.FileInputStream; class Main {

 public static void main(String args[]) throws Exception {
   FileInputStream fis = new FileInputStream(args[0]);
   DataInputStream dis = new DataInputStream(fis);
   // Read and display data
   System.out.print(dis.readShort() + " ");
   fis.close();
 }

}

 </source>
   
  
 
  



Read unsigned byte from file using DataInputStream

   <source lang="java">

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

 public static void main(String[] args) throws Exception {
   FileInputStream fin = new FileInputStream("C:/UnsignedByte.txt");
   DataInputStream din = new DataInputStream(fin);
   int i = din.readUnsignedByte();
   System.out.println("Unsinged byte value : " + i);
   din.close();
 }

}

 </source>
   
  
 
  



Use DataInputStream to create double

   <source lang="java">

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

 public static void main(String[] argv) throws Exception {
   FileInputStream fileIn = new FileInputStream("data.txt");
   DataInputStream dataIn = new DataInputStream(fileIn);
   System.out.println(dataIn.readUTF());
   int counter = dataIn.readInt();
   double sum = 0.0;
   for (int i = 0; i < counter; i++) {
     double current = dataIn.readDouble();
     System.out.println("Just read " + current);
     sum += current;
   }
   System.out.println("\nAverage = " + sum / counter);
   dataIn.close();
   fileIn.close();
 }

}

 </source>