Datum wird nicht übernommen

12/05/2008 - 16:34 von martina gerling | Report spam
Hallo,

ich möchte eine Liste von Dateien auf einen anderen Platz kopieren.
Dabei soll jedoch zuerst geprüft werden, ob die Datei schon existiert.
Stimmen dann noch LastWriteTime und Length überein, dann soll die
Datei nicht erneut kopiert werden.

Ich frage zuerst die Originaldatei ab und schreibe Zeit und Größe in
eine Variable. Diese vergleiche ich dann mit der evtl. vorhandenen
Zieldatei, falls vorhanden.

Muss die Datei kopiert werden, dann schreibe ich das Attribut
LastWriteTime mit der Variable LastWriteTime der Originaldatei -
dieses funktioniet aber nicht - ich habe für die Originaldatei
{13.08.2007 00:13:34} in der Variable und in der Zieldatei {13.08.2007
00:13:36}. Dadurch werden die Dateien immer wieder kopiert.

Hier mein Script:
int anzahl = 0;
if (ueListe.Count > 0)
{
try
{
anzahl = ueListe.Count;
foreach (UebertragungsListen lst in ueListe)
{
FileInfo fSource = new
FileInfo(Path.Combine(Application.StartupPath,
lst.filename));
long sourceSize = fSource.Length;
DateTime sourceLWT = fSource.LastWriteTime;

if (File.Exists(Path.Combine(targetpool,
lst.projectname)))
{
FileInfo fDest = new
FileInfo(Path.Combine(targetpool, lst.projectname));
long tempSize = fDest.Length;
DateTime tempDt = fDest.LastWriteTime;
if (tempSize == sourceSize && tempDt =sourceLWT)
{
anzahl--;
continue;
}
}


File.Copy(Path.Combine(Application.StartupPath, lst.filename),
Path.Combine(targetpool, lst.projectname),
true);

FileInfo targetFile = new
FileInfo(Path.Combine(targetpool, lst.projectname));
targetFile.LastWriteTime targetFile.LastAccessTime = targetFile.CreationTime = sourceLWT;
anzahl--;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Gruß

Martina
 

Lesen sie die antworten

#1 Frank Dzaebel
12/05/2008 - 17:55 | Warnen spam
Hallo Martina,

[...] Muss die Datei kopiert werden, dann schreibe ich das Attribut
LastWriteTime mit der Variable LastWriteTime der Originaldatei -
dieses funktioniet aber nicht



Dein Code ist da aber im Prinzip korrekt, wenn ich
mal davon ausgehe, dass der Teil, den Du uns vorenthalten
hast, auch korrekt ist.

Debugge doch mal die Stelle:
if (tempSize == sourceSize && tempDt == sourceLWT)
Was sind da für Werte drin?

Hast Du eigentlich Umlaute im Pfad?
Falls ja, kannst Du - wenn noch nicht geschehen -
ggf. mal auf folgendes aktualisieren:

[Downloaddetails: .NET 2.0 SP1 (x86)]
http://www.microsoft.com/downloads/...633f706ba5

Dennoch vielleicht zunàchst einmal die Antwort auf meine Frage geben.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen