//tale classe ha il compito di eliminare le ridondanze di dati rilevate durante la ricerca di info da parte degli slave //e di formare un unico file-risultato import java.io.*; public class fondiFile { private int numFile; private int index; private String risultatoFile; public fondiFile(int arg1, int arg2){ super(); numFile=arg1; index=arg2; } private String eliminaRidondanze(String filez){ File f = null; PrintWriter dest; File filezRisultato; try{ filezRisultato = new File(index+"temp.dat"); dest = new PrintWriter(new BufferedWriter(new FileWriter(filezRisultato))); } catch(Exception e){ return "errore"; } int numLine=0; boolean finito=false; while (finito==false){ BufferedReader input; try{ f = new File(filez); input = new BufferedReader(new FileReader(f)); } catch(Exception e){ return "errore"; } String line; try{ for (int i=0;i<numLine;i++){ String temp=input.readLine(); } line=input.readLine(); } catch (Exception e){ return "errore"; } if(line==null){ try{ input.close(); finito=true; } catch (Exception e){ return "errore"; } } else{ String confr; boolean scriviLinea = true; try{ while ( (confr = input.readLine()) != null){ if (line.equals(confr)){ scriviLinea=false; break; } } } catch (Exception e){ return "errore"; } numLine++; if (scriviLinea){ dest.println(line); } try{ input.close(); } catch (Exception e){ return "errore"; } } }//end while dest.close(); f.delete(); filezRisultato.renameTo(f); return filez; } private String concatenaFile(){ // i nomi dei file in input sono "index-0.dat" fino a "index-numFile.dat" PrintWriter output; try{ output = new PrintWriter(new BufferedWriter(new FileWriter(index + "-finito.dat"))); } catch(Exception e){ System.out.println(e.toString()); return "errore"; } for (int numFileScritti=0; numFileScritti<numFile;numFileScritti++){ File f = new File(""+index+"-"+numFileScritti+".dat"); if (!f.exists()){ System.out.println("file di input " + f.toString() + " non esiste"); continue;//se il file non esiste allora c'è stato un errore e quindi si continua col prossimo file } BufferedReader input; try{ input = new BufferedReader(new FileReader(f)); } catch(Exception e){ continue; } try{ String line; while ( (line = input.readLine()) != null){ if (line!="") output.println(line); } output.flush(); input.close(); } catch(Exception e){ continue; } boolean ris = f.delete(); }//end for output.close(); return index+"-finito.dat"; //il file in uscita è "index-finito.dat" } public String esegui(){ String ris = this.concatenaFile(); System.out.println("RISULTATO CONCATENAFILE: " + ris); if (ris!="errore"){ String ris2 = this.eliminaRidondanze(ris); System.out.println("RISULTATO ELIMINARIDONDANZE: " + ris); return ris2; } return ris; } }//fine class