/***************************************************************/
/* Prof. Dr. Carsten Vogt                                      */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                      */
/* http://www.nt.fh-koeln.de/vogt                              */
/*                                                             */
/* Das Programm zeigt die byteorientierte Datei-Ein-/Ausgabe:  */
/* Werte werden in ihrer Bitdarstellung in die Datei geschrie- */
/* ben, sind also fuer den menschlichen Benutzer nicht lesbar. */
/***************************************************************/

import java.io.*;

public class DateiByte {

 public static void main(String args[]) throws IOException {

  /* Datei 'testdatei' oeffen bzw. erzeugen und ihren Inhalt loeschen */

  FileOutputStream fileOut = new FileOutputStream("testdatei");
      /* Randbemerkung: Oeffnen zum Anhaengen durch "... new FileOutputStream("testdatei",true)" */

  /* geoeffnete Datei mit einem DataOutputStream-Objekt verketten,
     (diese Klasse bietet differenzierte Ausgabemethoden fuer die einzelnen Typen) */

  DataOutputStream dataOutStr = new DataOutputStream(fileOut);

  /* Variablen mit auszugebenden Werten erzeugen */

  byte   byte_zahl = 1;
  short  short_zahl = 22;
  int    int_zahl = 333;
  long   long_zahl = 4444;
  float  float_zahl = 55555.5f;
  double double_zahl = 666666.66;
  char   char_wert = 'a';
  String string_var = new String("TEXT");

  /* Werte in Datei ausgeben */  

  dataOutStr.writeByte(byte_zahl);
  dataOutStr.writeShort(short_zahl);
  dataOutStr.writeInt(int_zahl);
  dataOutStr.writeLong(long_zahl);
  dataOutStr.writeFloat(float_zahl);
  dataOutStr.writeDouble(double_zahl);
  dataOutStr.writeChar(char_wert);
  dataOutStr.writeUTF(string_var);

  /* Datei schliessen */

  dataOutStr.close();  

  /* Variableninhalte loeschen */

  byte_zahl = 0;
  short_zahl = 0;
  int_zahl = 0;
  long_zahl = 0;
  float_zahl = 0;
  double_zahl = 0;
  char_wert = ' ';
  string_var = null;

  /* Datei zur Eingabe oeffnen ... */

  FileInputStream fileIn = new FileInputStream("testdatei");

  /* ... und mit DataInputStream-Objekt verknuepfen */

  DataInputStream dataInStr = new DataInputStream(fileIn);

  /* Werte in Variablen einlesen */

  byte_zahl = dataInStr.readByte();  
  short_zahl = dataInStr.readShort();  
  int_zahl = dataInStr.readInt();  
  long_zahl = dataInStr.readLong();  
  float_zahl = dataInStr.readFloat();  
  double_zahl = dataInStr.readDouble();  
  char_wert = dataInStr.readChar();
  string_var = new String(dataInStr.readUTF());

  /* gelesene Werte ausgeben */

  System.out.println();
  System.out.println("Gelesene byte-Zahl: " + byte_zahl);
  System.out.println("Gelesene short-Zahl: " + short_zahl);
  System.out.println("Gelesene int-Zahl: " + int_zahl);
  System.out.println("Gelesene long-Zahl: " + long_zahl);
  System.out.println("Gelesene float-Zahl: " + float_zahl);
  System.out.println("Gelesene double-Zahl: " + double_zahl);
  System.out.println("Gelesener char-Wert: " + char_wert);
  System.out.println("Gelesener String: " + string_var);

 }

}

