Zum Inhalt springen

Dateien in Verzeichnissen vergleichen


Welenreiter

Empfohlene Beiträge

ich suche ein tool das mit die Dateien in 2 Verzeichnissen vergleicht und dann ausspuckt welche unterschiedlich sind.
Dafür solltest du erstmal definieren, wann ein Verzeichnis für dich unterschiedlich ist.

(1) Wenn es die gleiche Anzahl an Dateien beinhaltet?

(2) 1 und alle Dateien müssen die gleichen Namen haben?

(3) 2 und alle Dateien müssen die gleichen Inhalte haben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tataaa....mal wieder ein Job für den Total Commander ;-)

Vorgehensweise :

Linke Seite in den Ordner A wechseln

Rechte Seite in den Ordner B wechseln

Dann -> Befehle -> Verzeichnisse synchronisieren

Kannst zusätzlich wählen :

-Unterverzeichnisse vergleichen

-nach Inhalt (binärer Vergleich)

-Datum Ignorieren

- Asymetrisch

Du bekommst dann eine Liste die dir zeigt, welche Dateien gleich, ungleich bzw. welche von A nach B bzw. von B nach A kopiert werden müssen.

Musst bloß vorsichtig bei der Option "Asymetrisch" sein.

Das bedeutet :

Angenommen du hast in Ordner A die Dateien 1,2 und 3

In Ordner B hast du 1,2,3,4. Synchronisiertst du von A nach B und hast die Option Asymetrisch gewählt, löscht er in Ordner B die Datei 4.

Klingt evtl. verwirrend ;-), ist aber relativ leicht zu durchschauen.

Download findest du hier : http://www.ghisler.com/ddownload.htm

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es sit die gleiche anzahl der Dateien.

Der Inhalt ist mir egal, ich will die unteschieden in den namen wissen.

Voila!


package de.perdian.test;


import java.io.File;

import java.util.Collections;

import java.util.HashSet;

import java.util.Set;


public class ListDirectoryDifferences {


  public static void main(String[] args) {

    File d1                 = new File(args[0]);

    File d2                 = new File(args[1]);

    Set<String> fileNames1  = ListDirectoryDifferences.createFileNameSet(d1);

    Set<String> fileNames2  = ListDirectoryDifferences.createFileNameSet(d2);

    for(String fileName1 : fileNames1) {

      if(!fileNames2.remove(fileName1)) {

        System.out.println("Datei " + fileName1 + " existiert nur in Verzeichnis " + d1.getAbsolutePath());

      }

    }

    for(String remaningFileName : fileNames2) {

      System.out.println("Datei " + remaningFileName + " existiert nur in Verzeichnis " + d2.getAbsolutePath());

    }

  }


  private static Set<String> createFileNameSet(File directory) {

    File[] files            = directory.listFiles();

    if(files == null) {

      return Collections.emptySet();

    } else {

      Set<String> result    = new HashSet<String>(files.length);

      for(File file : files) {

        result.add(file.getName());

      }

      return result;

    }

  }


}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...