// File IO Examples

import java.io.*;
import java.util.*;

public class FileStuff {
	
	public static void main(String[] args) {
	
		//binaryFileIO();	//binary is not human readable
		textFileIO();		//human readable
			
	}	
	
	public static void textFileIO() {
			
			try {
				OutputStream out = new FileOutputStream("out.txt");
				Writer outW = new OutputStreamWriter(out);
				BufferedWriter bOut = new BufferedWriter(outW);
				PrintWriter pOut = new PrintWriter(bOut);
				
				pOut.print(10);			pOut.print(",");
				pOut.print(12.3);		pOut.print(",");
				pOut.print(true);		pOut.print(",");
				pOut.print("hello world");	pOut.print(",");
				pOut.print(23.3334f);		pOut.print(",");
				pOut.print(234);
				
				pOut.println();
				
				pOut.print(10);			pOut.print(",");
				pOut.print(12.3);		pOut.print(",");
				pOut.print(true);		pOut.print(",");
				pOut.print("hello world");	pOut.print(",");
				pOut.print(23.3334f);		pOut.print(",");
				pOut.print(234);
				
				pOut.close();
				
			}
			catch(IOException e) {
				
			}
			
			try {
				Reader in = new FileReader("out.txt");
				BufferedReader inW = new BufferedReader(in);
				
				StringTokenizer st;
				String line = inW.readLine();
				
				while (line != null) {
					
					st = new StringTokenizer(line, ",");
					//System.out.println(line);
					
					/*
					 *while (st.hasMoreElements()) {
						System.out.println(st.nextToken());	
					}
					*/
					int i = Integer.parseInt(st.nextToken());
					double d = Double.parseDouble(st.nextToken());
					
					System.out.println(i + " " + d);
					
					System.out.println("-----------------");
					line = inW.readLine();		
				}
				
				inW.close();
				
			}
			catch(IOException e) {
				
			}
	}
	
	public static void binaryFileIO() {
		try {
			
			/*
			OutputStream out = new FileOutputStream("data.dat");
			BufferedOutputStream bout = new BufferedOutputStream(out);
			DataOutputStream outFile = new DataOutputStream(bout);
			*/
			
			DataOutputStream outFile = new DataOutputStream(
										new BufferedOutputStream(
										 new FileOutputStream("data.dat")));
			
			outFile.writeInt(10);
			outFile.writeDouble(12.5);
			outFile.writeUTF("these are chars");
			outFile.writeBoolean(true);
			outFile.writeFloat(233.455f);
			
			outFile.close();
			
		}
		catch(IOException e) {
			System.out.println("error with output file");	
		}
		
		try {
			
			InputStream in = new FileInputStream("data.dat");
			DataInputStream inFile = new DataInputStream(in);
			
			int i = inFile.readInt();
			double d = inFile.readDouble();
			String s = inFile.readUTF();
			boolean b = inFile.readBoolean();
			float f = inFile.readFloat();
			
			inFile.close();
			
			System.out.println(i);
			System.out.println(d);
			System.out.println(s);
			System.out.println(b);
			System.out.println(f);
			
		}
		catch(IOException e) {
			System.out.println("error with input file");	
		}
	
	}
	
}