private void actionGetpiece (String key, String demande, OutputStream out) throws IOException {
	// Passer directement le string
	String[] tab = demande.split(" ");
	Object o = _hash.get(key);

	if (o != null){
	    Fichier f = (Fichier)o;
	    if (_estMisAssertion) 
		System.out.println("On me demande des pièce de mon fichier " + key);
	    
	    String[] index = ((String)demande.subSequence(demande.indexOf("[")+1,demande.indexOf("]"))).split(" ");
	    String reponse = "data " + key + " [";
	    int i;
	    boolean[] masque = f.getMasque();
	    
	    String reponsePartielle = "";
	    int taille_piece        = f.getTaillePiece();
	    byte lecteur[]          = new byte[taille_piece];
	    int retour;
	    int last_indice         = (int) (f.getTaille()/f.getTaillePiece());
	    int last_taille         = (int)f.getTaille() % f.getTaillePiece();
	    byte [] last_lecteur       = new byte[last_taille]; 



	    for ( i=0 ; i<index.length ; i++){
		// Si on a bien le i-ème index dans notre Buffermap
		int id = Integer.parseInt(index[i]);
		if (masque[id]){
		    // on ouvre le fichier dont on extrait les données
		    RandomAccessFile file = new RandomAccessFile("Download/" + f.getName(), "r");
		    file.seek(id*taille_piece);
		    if (id == last_indice) {
			retour = file.read(last_lecteur);
		    	reponsePartielle += id + ":" + new String(last_lecteur) + " ";
		    } else {
			retour = file.read(lecteur);
			reponsePartielle += id + ":" + new String(lecteur) + " ";
		    }
		}
	    }
	    
	    if (_estMisAssertion) 
		System.out.println(reponsePartielle.length() +":'"+reponsePartielle +"'");
	    reponse += reponsePartielle.substring(0,reponsePartielle.length() -1) + "]";
	    if (_estMisAssertion) 	    
		System.out.println(">> " + reponse);
	    out.write(reponse.getBytes());
	    out.flush();
	}
    }