/** * 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; }