package pack01;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Flux01
{

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		File monFichier = new File("/home/christian/test.txt");
		System.out.println("Chemin absolu du fichier " + monFichier.getAbsolutePath());
		System.out.println("Chemin relatif du fichier " + monFichier.getPath());
		if (monFichier.exists())
		{
			if (monFichier.isFile())
			{
				System.out.print("C'est un fichier de " + monFichier.length() + " octets ");
				GregorianCalendar monCalendrier = new GregorianCalendar();
				monCalendrier.setTimeInMillis(monFichier.lastModified());
				System.out.println("modifié le " +
						monCalendrier.get(Calendar.DAY_OF_MONTH) + "/" +
						(monCalendrier.get(Calendar.MONTH) + 1) + "/" +
						monCalendrier.get(Calendar.YEAR) +
						" à " + monCalendrier.get(Calendar.HOUR_OF_DAY) + ":" +
						monCalendrier.get(Calendar.MINUTE) + ":" +
						monCalendrier.get(Calendar.SECOND));

				System.out.println("Lecture du flux :\n");
				BufferedInputStream monFlux = null;
				try
				{
					monFlux = new BufferedInputStream(new FileInputStream (monFichier));
					int monTampon;
					while((monTampon = monFlux.read()) >= 0)
					{
							System.out.print((char)monTampon);
					}
					System.out.println("\n----------");
					
				}
				catch (Exception e)
				{
					e.printStackTrace();
				}
				finally
				{
					// Pour fermer le fichier en toutes hypothèses, même si l'ouverture a échoué
					if (monFlux != null)
					{
						try
						{
							monFlux.close();
						}
						catch (IOException e)
						{
							e.printStackTrace();
						}
					}
				}
			}
			else if (monFichier.isDirectory())
			{
				System.out.println("C'est un répertoire.");
			}
			else
			{
				System.out.println("Ce n'est ni un fichier ni un répertoire.");
			}
		}
		else
		{
			System.out.println("Le fichier " + monFichier.getName() + " n'existe pas.");
		}
		
		// Création d'une personne
		
		Personne maPersonne = new Personne("Dupont", "Agnès", "Rue des fossés fleuris, 25", new Date(105, 5, 13)); // Millenium bug dans la date ?
		maPersonne.sauver(); // Je la sauve dans l'ObjectOutputStream
		maPersonne = null; // J'oublie la personne
		maPersonne = new Personne(); // J'en crée une nouvelle
		maPersonne.lire(); // Je la relis dans l'ObjectInputStream
		
		// Puis je l'affiche, comme si de rien n'était !
		System.out.println("Nom : " + maPersonne.getNom());
		System.out.println("Prénom : " + maPersonne.getPrenom());
		System.out.println("Adresse : " + maPersonne.getAdresse());
		System.out.println("Naissance : " + maPersonne.getNaissance());
	}
}
