Ho il requisito di "verificare l'integrità" del contenuto di file. I file verranno scritti su CD/DVD, che potrebbe essere copiato molte volte. L'idea è di identificare le copie (dopo che sono state rimosse da Nero ecc.) Che sono state copiate correttamente.Confermare il contenuto del file con l'hash
Sono piuttosto nuovo a questo, ma una ricerca rapida suggerisce che il numero Arrays.hashCode(byte[])
soddisferà l'esigenza. Possiamo includere un file sul disco che contiene il risultato di quella chiamata per ogni risorsa di interesse, quindi confrontarlo con lo byte[]
dello File
come letto dal disco quando selezionato.
Ho capito correttamente il metodo, è un modo valido per controllare il contenuto del file?
In caso contrario, sarebbero graditi suggerimenti per la ricerca di parole chiave o strategie/metodi/classi.
Codice di lavoro basato sulla risposta di Brendan. Si occupa del problema identificato da VoidStar (è necessario tenere in memoria l'intero per ottenere l'hash).
import java.io.File;
import java.io.FileInputStream;
import java.util.zip.CRC32;
class TestHash {
public static void main(String[] args) throws Exception {
File f = new File("TestHash.java");
FileInputStream fis = new FileInputStream(f);
CRC32 crcMaker = new CRC32();
byte[] buffer = new byte[65536];
int bytesRead;
while((bytesRead = fis.read(buffer)) != -1) {
crcMaker.update(buffer, 0, bytesRead);
}
long crc = crcMaker.getValue(); // This is your error checking code
System.out.println("CRC code is " + crc);
}
}
Grazie mille. Ora ho un codice funzionante (modificato in questione) di cui sono felice. –