
// SparaOchLasaPrimStrangBin.java

import java.io.*;

/******************************************************************************
/ SparaOchLasaPrimStrangBin.java sparar och läser primitiva värden och sträng-
/ ar till/från en binärfil.
/
/   FileOutputStream
/   FileInputStream
/   DataOutputStream
/   DataInputStream
/
/*****************************************************************************/

public class SparaOchLasaPrimStrangBin
{

    public static void main(String[] args) throws java.io.IOException
    {
		SparaOchLasaPrim ();
		SparaOchLasaStrang ();
    }

/******************************************************************************
/ SparaOchLasaPrim() sparar några primitiva värden i en binärfil och läser in
/ dem igen.
/
/ IN : -
/
/ UT : (void)
/
/*****************************************************************************/
    public static void SparaOchLasaPrim() throws java.io.IOException
    {
		System.out.println ();
		System.out.println ("---- Spara & Läsa primitiva värden - bin-fil ----");
		
		FileOutputStream    fos = new FileOutputStream ("PrimBin.dat");
		DataOutputStream    fout = new DataOutputStream (fos);
		
		fout.writeInt (14);
		fout.writeDouble (5.764);
		fout.writeChar ('Z');
		
		fos.close ();
		
		// ----
		
		FileInputStream    fis = new FileInputStream ("PrimBin.dat");
		DataInputStream    fin = new DataInputStream (fis);
		
		int    i = fin.readInt ();
		double d = fin.readDouble ();
		char   c = fin.readChar ();
		
		fin.close ();
		
		// ---
		
		System.out.println (i);
		System.out.println (d);
		System.out.println (c);
		System.out.println ();
		
	}

/******************************************************************************
/ SparaOchLasaStrang() sparar strängar med tre olika format till en binärfil
/ och läser tillbaka strängarna.
/
/ IN : -
/
/ UT : (void)
/
/*****************************************************************************/
    public static void SparaOchLasaStrang() throws java.io.IOException
    {
		System.out.println ();
		System.out.println ("---- Spara & Läsa sträng - bin-fil ----");

		FileOutputStream    fos = new FileOutputStream ("StringBin.dat");
		DataOutputStream    fout = new DataOutputStream (fos);
		
		fout.writeUTF ("En UTF-8 formatterad sträng.");
		fout.writeBytes ("En sträng lagrad som bytes.\0");
		fout.writeChars ("En sträng lagrad som chars.\0");
		
		fout.close ();
		
		// ----
		
		FileInputStream    fis = new FileInputStream ("StringBin.dat");
		DataInputStream    fin = new DataInputStream (fis);
		
		System.out.println (fin.readUTF ());
		System.out.println ();
		
		// Finns ingen läs-motsvarighet till writeBytes().
		StringBuilder    sb1 = new StringBuilder ();
		byte b = fin.readByte ();
		while (b != 0)
		{
			sb1.append ((char) b);
			b = fin.readByte ();
		}
		System.out.println (sb1);
		System.out.println ();
		
		// Finns ingen läs-motsvarighet till writeChars().
		StringBuilder    sb2 = new StringBuilder ();
		char c = fin.readChar ();
		while (c != 0)
		{
			sb2.append (c);
			c = fin.readChar ();
		}
		System.out.println (sb2);
		System.out.println ();
		
		fin.close ();
	}
}