예제 #1
0
 /**
  * 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());
 }
예제 #2
0
  /**
   * 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;
  }
예제 #3
0
 /** 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());
   }
 }