vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Ordner kopieren... 
Autor: Manfred X
Datum: 29.05.11 18:18

Hallo!

Werf mal einen Blick auf diesen Code.
Die Entfernung des Schreibschutzes im Zielordner ist optional.
Nicht geschützte Zieldateien werden stets überschrieben.
Kopierfehler werden in "ErrorMessage" aufgelistet. (Retcode: false),
ebenfalls der Abbruch der Funktion (falls erforderlich).

Falls möglich wird nach einem Fehler fortgesetzt.
Falls im Ziel vorhanden: Bezug auf Zeitpunkt der letzten Änderung.

Private Function TrimToUpper(ByVal s As String) As String
   'Hilfsfunktion: 
   'Konvertiert eine Stringliste in Großschreibung
   Return Trim(s.ToUpper)
End Function
 
''' <summary> Jüngere Dateien (letzte Änderung) kopieren</summary>
''' <param name="sourcedir">Quellverzeichnis</param>
''' <param name="destdir">Zielverzeichnis</param>
''' <param name="RemoveReadOnly">Darf ReadOnly-Attribut im Ziel entfernt 
' werden?</param>
''' <param name="ErrorMessage">Protokoll der Fehlermeldungen</param>
''' <returns>Alles OK?</returns>
Public Function CopyFilesIfNewer(ByVal sourcedir As String, _
                                 ByVal destdir As String, _
                Optional ByVal RemoveReadOnly As Boolean = False, _
                Optional ByRef ErrorMessage As String = "") As Boolean
 
    ErrorMessage = "Verzeichnis nicht vorhanden"
    If Not IO.Directory.Exists(sourcedir) Then Return False
    If Not IO.Directory.Exists(destdir) Then Return False
 
    'Rückgabe initialisieren
    Dim retcode As Boolean = True
    ErrorMessage = String.Empty
 
    Try
       'Liste der Datei-Infos im Quellverzeichnis ermitteln
       Dim source As List(Of IO.FileInfo) = _
       New IO.DirectoryInfo(sourcedir).EnumerateFiles.ToList
 
       'Liste der Dateinamen im Zielverzeichnis ermitteln
       Dim destination As List(Of String) = _
       IO.Directory.GetFiles(destdir).ToList. _
       ConvertAll(New Converter(Of String, String)(AddressOf TrimToUpper))
 
       For Each src As IO.FileInfo In source
          'voller Pfad der zu kopierenden Datei im Zielverzeichnis
          Dim dest As String = _
          IO.Path.Combine(destdir, src.Name).Trim.ToUpper
 
          Try
             If destination.Contains(dest) Then
                'Dateiname im Zielordner bereits vorhanden ....
                Dim destinfo As New IO.FileInfo(dest)
                Dim desttime As Date = destinfo.LastWriteTime
                If desttime < src.LastWriteTime Then
                   'die bereits vorhandene Datei im Zielordner ist älter 
                   Dim ro As Boolean = destinfo.IsReadOnly
                   If RemoveReadOnly Then
                      'Schreibschutz im Ziel ggf. entfernen
                      destinfo.IsReadOnly = False
                   End If
                   'Datei im Zielordner löschen
                   IO.File.Delete(dest)
                   'Datei kopieren
                   IO.File.Copy(src.FullName, dest)
                   destinfo = New IO.FileInfo(dest)
                   'Schreibschutz-Einstellung im Ziel wieder herstellen
                   destinfo.IsReadOnly = ro
                End If
             Else
                'Dateiname im Zielordner nicht vorhanden
                IO.File.Copy(src.FullName, dest)
             End If
          Catch ex As Exception
             'Kopieren einer Datei erzeugt Ausnahme: Protokoll
             ErrorMessage &= (ex.Message & Microsoft.VisualBasic.vbNewLine)
             retcode = False
          End Try
       Next src 'Schleife über Quell-Dateien
 
       Return retcode
    Catch ex As Exception       
       ErrorMessage &= ("Abbruch: " & ex.Message & _
         Microsoft.VisualBasic.vbNewLine)
       Return False
    End Try
End Function
MfG
Manfred

Beitrag wurde zuletzt am 29.05.11 um 18:26:20 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Ordner kopieren...1.285silast28.05.11 19:56
Re: Ordner kopieren...850Manfred X28.05.11 21:28
Re: Ordner kopieren...804silast29.05.11 09:02
Re: Ordner kopieren...823Manfred X29.05.11 11:21
Re: Ordner kopieren...811Manfred X29.05.11 13:16
Re: Ordner kopieren...803silast29.05.11 17:15
Re: Ordner kopieren...870Manfred X29.05.11 18:18
Re: Ordner kopieren...974silast29.05.11 22:30

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel