Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Comparare il contenuto di due cartelle
Forum Updated to NodeBB v4.3 + New Features

Comparare il contenuto di due cartelle

Scheduled Pinned Locked Moved Unsolved Italian
4 Posts 4 Posters 561 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    fermatqt
    wrote on last edited by
    #1

    ciao!

    vorrei compare il contenuto di due cartelle, ma sto avendo qualche difficoltà.
    questo il contenuto:

    $ ls -l Desktop/A
    total 8
    -rw-r--r--@ 1 matte  staff  8  5 Feb 08:30 uno.txt
    
    $ ls -l Desktop/B
    total 16
    -rw-r--r--@ 1 matte  staff  5  5 Feb 08:30 due.txt
    -rw-r--r--@ 1 matte  staff  8  5 Feb 08:30 uno.txt
    

    quindi un file è uguale.
    mi sono fermato a questo codice, che ovviamente non funziona:

    #include <QCoreApplication>
    #include <QDebug>
    #include <QDir>
    
    int main(int argc, char *argv[]) {
        QCoreApplication a(argc, argv);
    
        QDir dirA("/Users/matte/Desktop/A");
        QDir dirB("/Users/matte/Desktop/B");
    
        QFileInfoList listaA = dirA.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden, QDir::DirsFirst);
        QFileInfoList listaB = dirB.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden, QDir::DirsFirst);
    
        for(int i = 0; i < listaA.size(); i++) {
            QFileInfo fileA = listaA.at(i);
            QFileInfo fileB = listaB.at(i);
    
            if(fileA.fileName() == fileB.fileName()) {
                qDebug() << "OK: " << fileA.fileName();
            } else {
                qDebug() << "KO: " << fileA.fileName();
            }
        }
    
        qDebug() << "-------------------";
    
        return a.exec();
    }
    
    

    nella cartella B il file uguale, viene dopo l'altro per un discorso di ordine alfabetico.
    e quindi già cosi non mi da il risultato corretto.
    come dovrei comparare le due liste??

    1 Reply Last reply
    0
    • guerinoniG Offline
      guerinoniG Offline
      guerinoni
      wrote on last edited by
      #2

      @fermatqt Consiglio generale, se due container (in questo caso la lista dei file nella folder) hanno dimensione diversa fai senza controllare tutti gli elementi -> sono diverse

      1 Reply Last reply
      0
      • mrdebugM Offline
        mrdebugM Offline
        mrdebug
        wrote on last edited by
        #3

        Prova a vedere se questo esempio ti può andare bene
        https://github.com/denisgottardello/BackupTo/blob/master/qthsynchronize.cpp
        funzione
        QThSynchronize::DirectoryCheckToCopy

        Need programmers to hire?
        www.labcsp.com
        www.denisgottardello.it
        GMT+1
        Skype: mrdebug

        1 Reply Last reply
        0
        • H Offline
          H Offline
          H-a-y-K
          wrote on last edited by
          #4

          Per comparare il contenuto delle cartelle, credo che basti comparare listaA e listaB

          1 Reply Last reply
          0

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved