public static void main(String[] args){
	boolean estMisAssertion = false;
	assert estMisAssertion = true;

	System.out.println("Lancement du programme Pair");
	if (estMisAssertion)
	    System.out.println("Veuillez patienter quelques instants ...\n");

	FichierConfiguration fichierConf = new FichierConfiguration("configuration.txt");
	System.out.println(fichierConf);
	
	
	File repertoire = new File("Download");
	if ( ! repertoire.isDirectory() ) {
	    System.out.println("Le Dossier Download est introuvable");
	    System.exit(1);
	}
	
	// *TODO* filtrer les fichiers cachés   
	// use :"File[] listFiles(FileFilter filter)" 
	File[] list = repertoire.listFiles();

	Hashtable<String,Fichier> collection = new Hashtable<String,Fichier> (2*list.length, (float)0.75);
	
	for ( int i = 0; i < list.length ; i++) {
	    // si ce n'est pas un fichier caché
	    if ( list[i].exists() & list[i].getName().indexOf(".") != 0 ) {
		remplire(list[i], collection, fichierConf.getTaille());
	    }
	}


	// On dispose maintenant de la collection remplie
	sauver(collection);
	
	int localPort = 0;
	if (0 < args.length){
	    localPort = Integer.parseInt(args[0]); 
	}

	Serveur th2 = new Serveur("String name", collection, fichierConf, localPort);
	th2.start();
	
	/** /
	System.out.println("\nReprise du téléchargement des fichiers non complets");    
	RepriseTelechargement th6 = new RepriseTelechargement("th6", fichierConf, collection);
	th6.run();	
	System.out.println("Fin de la reprise des dl\n");    
	// */

	System.out.println("\nProgramme utilisateur");    
	ThreadUtilisateur th4 = new ThreadUtilisateur("th4", fichierConf, collection);
	th4.run();	
	System.out.println("Fin du programme utilisateur");    
	
	sauver(collection);
	System.out.println("Fin du programme Pair");    
	System.exit(0);
    }