Come rimuovere i file duplicati in Java

November 17

Le fonti comuni di spazio su disco sprecato sono copie duplicate dello stesso file in tutto il sistema. Per evitare questo, è possibile creare un semplice script in Java per rimuovere tutti, ma una copia di ciascun file scoperto. Questo script procedere attraverso tutti i file all'interno di una determinata cartella e li esaminare singolarmente per determinare quali sono equivalenti. Questo potrebbe essere un modo, per esempio, per cancellare una cartella di musica che ha più voci duplicate.

istruzione

1 Aprire un editor di testo. Qualsiasi editor di testo farà, ma si può preferire l'utilizzo di un ambiente di sviluppo integrato (IDE) come Netbeans per risparmiare alcuni passaggi.

2 Incollare il seguente struttura di base della classe Java per rimuovere i file duplicati:

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

public class DuplicateFileRemover {

public static boolean CompareFiles(File x, File y) {

}

Main (string [] args) {public static void

}

}

Il codice andrà in due metodi: CompareFiles e principale.

3 Compilare il codice per il metodo CompareFiles:

public static boolean CompareFiles(File x, File y) {

provare {

Scanner xs = new Scanner (x);

ys Scanner = nuovo scanner (y);

risultato booleano = true;

while (risultato) {

if (xs.nextByte () = ys.nextByte) (!) Risultato = false;

}

risultato tornare;

} Catch (FileNotFoundException e) {

System.out.println (e.getMessage ());

return false;

}

}

Questo metodo confrontare i due file specificati ad essa, byte per byte, per vedere se contengono dati duplicati. Non appena si scopre una differenza, si riporta di nuovo che i file non sono gli stessi. Altrimenti, si segnala che sono.

4 Incollare i dati per il metodo principale:

public static void main(String[] args) {

dir file = new File ( ".");

File [] = fileList dir.listFiles ();

for (int x = 0; x & lt; fileList.length; x ++) {

for (int y = x + 1; y & lt; fileList.length; y ++) {

if (CompareFiles (fileList [x], fileList [y])) {

fileList [x] .Delete ();

}

}

}

}

Questo procede attraverso ogni file nella directory corrente e mette alla prova ognuno contro gli altri per vedere se sono la stessa cosa. Se due file sono gli stessi, il primo dei due è soppresso.

Consigli e avvertenze

  • Questo script fallirà se viene eseguito su una cartella l'utente non dispone di lettura e scrittura a.