/** * Ajoute le fichier à la liste du client. * * @param idFichier l'identifiant du fichier. * @param atc les attributs du fichier pour le client. */ public void ajouterFichier(String idFichier, AttributFichierClient atc) { listeFichier.put(idFichier, atc); gui.addPartage( atc.getNomFichierAbsolu() + " " + atc.getNbPartieTotale() + " parties " + atc.getDateDerModif()); }
/** * Renvoi la partie <b>partie</b> du fichier d'identifiant <b>id</b>. * * @param id String * @param partie int * @return un tableau de byte[], null en cas d'erreur. */ public byte[] telechargerFichier(String id, long partie) { System.out.println("Telechargement de : " + id + ", partie : " + partie); if (!listeFichier.containsKey(id)) /* On a pas le fichier */ return null; AttributFichierClient atc = (AttributFichierClient) listeFichier.get(id); if (null == atc) /* On a pas les attributs du fichier du client */ return null; gui.addUpload( atc.getNomFichierAbsolu() + " " + atc.getNbPartieTotale() + " parties " + atc.getDateDerModif().toString()); try { FileInputStream fread = new FileInputStream(atc.getNomFichierAbsolu()); byte[] b = new byte[MAX_OCTET_LU]; /* placement de la tete de lecture au bon endroit */ long deplacement = partie * MAX_OCTET_LU; if (deplacement != fread.skip(deplacement)) return null; /* on a pas réussi a se déplacer au bon endroit du fichier */ /* Lecture des octets dans le fichier */ int nbOctetLu = fread.read(b, 0, MAX_OCTET_LU); /* vérification qu'on a bien pu lire le nombre d'octet. attention pour la derniere partie A FAIRE */ return b; } catch (java.io.FileNotFoundException ex1) { /* On a plus le fichier, on le retire du client */ retirerFichier(id); /* prevenir le serveur ??? dans telechargeFichier de client ? */ ex1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
/** Fonction de débug. */ public void afficheListeFichierClient() { Object[] c = listeFichier.values().toArray(); for (int i = 0; i < c.length; ++i) { AttributFichierClient afc = (AttributFichierClient) c[i]; System.out.println( "Nom Fichier : " + afc.getNomFichierAbsolu() + ", du client : " + afc.getNomClient() + ", sa taille est de : " + (new java.io.File(afc.getNomFichierAbsolu()).length()) + ", contient '" + afc.getNbPartieTotale() + "' parties au total" + ", et il est " + ((afc.fichierComplet()) ? "complet" : "incomplet") + ", et sa date est : " + afc.getDateDerModif()); } }