Dateien in Ordner mit List of String vergleichen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Arrow768.

    Dateien in Ordner mit List of String vergleichen

    Hi,

    ich arbeite derzeit an einem Backup-Programm.

    Das Programm soll die Datein eines Ordners (incl. UnterOrdner) mit einer Liste der Normalerweise vorhandenen Datein vergleichen.

    Eine Zeile in der Dateiliste sollte dann so aussehen "maps/xyz.abc" (wenn die datei in "/home/gameserver/maps/xyz.abc" liegt und ich "/home/gameserver" als Startverzeichniss angegeben habe)

    Derzeit hänge ich an etwas einfachem:

    Wie kann ich die alle Dateien in dem Startverzeichniss ermitteln, sodass das ganze Mono kompatibel bleibt ? (Will das Prog. dann auf Linux ausführen)

    Kann man dann die List of String so vergleichen ?

    VB.NET-Quellcode

    1. anzv = VorhList.Count ' Liste der Vorhandenen Dateien
    2. anze = ExList.Count ' Liste der Standard Dateien (sollen nicht kopiert werden)
    3. For i = 0 To anze
    4. If Not VorhList.Contains(ExList.Item(i)) Then
    5. CopyList.Add(ExList.Item(i)) ' Liste der zu kopierenden Dateien
    6. End If
    7. Next i


    mfg
    Arrow768
    Durch den Compiler wird es schon gehen.
    Ob es das gewünschte Verhalten bewirkt - Keine Ahnung, ich hab bisher noch nichts für Mono programmiert.
    Ich dachte, es gibt jemanden, der sich damit auskennt und bereit ist zu helfen.

    Die Frage bleibt bestehen:

    Wie kann ich die alle Dateien in dem Startverzeichniss ermitteln, sodass das ganze Mono kompatibel bleibt ?
    Zunächst sollte das ganze unter Win laufen. Wenn es dann unter Mono nicht läuft, fang an zu untersuchen, warum es nicht läuft (Inhalte, nicht Compiler).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dann schmeiß den VisualBasic-NameSpace raus.

    VB.NET-Quellcode

    1. InputBox
    ist ein Rudiment aus der Vorzeit.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Arrow768 schrieb:

    Ich hätte das zum auflisten der Datein in einem Ordner gefunden (incl. UnterOrdner).
    Gibt es da was einfacheres oder geht es nur so ?

    Was einfachereres gibts nicht, aber was ordentlicheres: RecursiveFileSearch

    Deine Quelle failt, wenn Linux einen anderen Separator verwendet als '\' (weißichnich, ob das zutrifft)
    Und failt auch, wenn Directories gefunden werden, für deren Zutritt keine Rechte bestehen.

    Und grauslich natürlich, dass die Ergebnisse nicht in einer List(Of String) gesammelt werden, sondern in eine Listbox.

    eine List(Of String) enthält Strings, wo eine Listbox unspezifische Objekte enthält.
    eine List(Of String) kann man auch unsichtbar weiterverarbeiten, ohne dass eine Listbox zugegen sein muß.

    Controls sind zur Präsentation der Daten da, nicht zur Datenhaltung.

    Willst du eine List(Of String) in einer Listbox anzeigen, verwende Databinding - ist im Sample ja gezeigt.

    Das Sample ist auch in anderer Hinsicht vielfach mächtiger, denn es sammelt keine Strings, sondern FileInfos.
    Und FileInfo stellt ja viel mehr Informationen bereit als nur den DateiPfad - das dürfte für ein Backup-Programm sicherlich interessant sein.

    ErfinderDesRades schrieb:

    Deine Quelle failt, wenn Linux einen anderen Separator verwendet als '\' (weißichnich, ob das zutrifft)

    Linux will definitiv einen Slash ("/") als Separator haben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Klar dass ich es noch anpassen muss.
    Ich hab ja kein GUI auf dem Linux-PC.

    Die Zutritts-Rechte sind kein Problem, weil das Prog. von dem User ausgeführt wird, dem die Ordner gehören.

    Eine ganz andere Frage:

    Mein Ordner soll dann so aussehen:
    Spoiler anzeigen

    Quellcode

    1. Gameserver
    2. -ServerFiles
    3. -MeinProgramm.exe
    4. -Filelist.exclude
    5. -...


    Wenn ich die Datein im Gameserver Ordner auflisten will und die Filelist.exclude einlesen will,
    muss ich über das Arbeitsverzeichniss des Progs arbeiten oder kann ich die Dateien/Ordner direkt angeben ?
    Spoiler anzeigen

    z.B. Pseudocode:

    Quellcode

    1. Read(Filelist.exclude)
    2. ListFile(ServerFiles)

    oder

    Quellcode

    1. Read(/home/Gameserver/Filelist.exclude)
    2. ListFile(/home/Gameserver/ServerFiles)