Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278

    [c++] Controllare se due file sono uguali

    Ciao raga.

    Vi spiego subito cosa devo fare.
    Ammettiamo che ho due file uguali (possono essere o .mp3 o .avi) però questi file sono chiamati con nomi di file diversi e ammettiamo che sia diversa anche la dimensione dei file di qualche byte(ad esempio per ragioni di campionamento).
    La domanda è questa come posso fare per riconoscre che i due file sono identici ?? :master:
    Il fatto è che li devo catalogare all'interno di un registro .txt e non posso scriverli due volte, ma una volta solo.
    Qualche mio amico mi ha detto che dovrei controllare l'header del file per reperire le informazioni sul file stesso: è giusta questa cosa ??
    Praticamente + o - è lo stesso principio dei file sharing ...
    Qualcuno sa darmi qualche indicazione ??
    Qualche libreria da scaricare ecc ??

    Grazie.



  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per i file di tipo multimediali, secondo il tipo, esistono delle informazioni (dislocate al loro interno) relative al contenuto (ad esempio, per gli mp3, anche se non nell'header, esistono le informazioni su autore, titolo, ....).

    Ovviamente, ogni tipo di file ha un proprio metodo di gestire al proprio interno tali informazioni e quindi, per ogni tipo di file dovrai studiarne il formato (quasi sempre disponibile su internet) e scrivere il codice apposito per leggere tali informazioni.
    Ma attenzione ... non esiste *una sola struttura* di tali informazioni che ti dica se e' un jpg, un bmp, un avi o un mp3, ma *tante* strutture di diverso tipo a seconda del tipo di file.

    Detto cio', potrai anche ricavare da tali informazioni che un file contiene lo stesso pezzo musicale o filmato di un altro ma *non e' detto che sia cosi'* perche', se il file non e' uguale byte per byte, anche se le informazioni indicano che il contenuto e' uguale, questo potrebbe essere completamente diverso.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [c++] Controllare se due file sono uguali

    Originariamente inviato da Kreator
    Vi spiego subito cosa devo fare.
    Ammettiamo che ho due file uguali (possono essere o .mp3 o .avi) però questi file sono chiamati con nomi di file diversi e ammettiamo che sia diversa anche la dimensione dei file di qualche byte(ad esempio per ragioni di campionamento).
    La domanda è questa come posso fare per riconoscre che i due file sono identici ??
    Vedi la risposta molto esaustiva di oregon.

    Comunque aggiungo io, che non è affatto "banale" fare questo tipo di comparazioni. Prendiamo per esempio i file mp3. I software P2P tipicamente si limitano a calcolare l'hash (es. SHA-1) del file per stabilire se 2 file sono uguali. Questa è la soluzione più veloce e pratica. Ma basta che chi mette sulla rete P2P il file abbia cambiato anche solo 1 tag del brano (es. autore) per far sì che 2 brani, seppur uguali, siano visti come "diversi" dal sw.
    Ecco perché sulle reti P2P capita di trovare decine (se non centinaia) di versioni dello stesso brano/file!!

    Fare una estrazione più accurata è certamente possibile. Conoscendo bene nei dettagli il formato (es. mp3) si può estrarre solo lo "stream" che contiene i dati audio. Ma anche qui non è banale. Basta che la codifica sia anche solo leggermente diversa (parametri diversi passati all'encoder) che i 2 stream sono comunque diversi.

    Insomma ... è tutto da vedere. Spero di non essere andato troppo OT, nel qual caso, mi scuso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.