Zum Inhalt springen

Empfohlene Beiträge

Geschrieben
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?

Geschrieben

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

Geschrieben
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;

    }

  }


}

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...