Forums Neueste Beiträge
 

Datenzugriff bei File Copy

10/06/2009 - 21:30 von Stephan Stone | Report spam
Hi zusammen,

Hab ein sehr komisches Problem bei der File Copy Methode in c#.

Mal kurz zur Einleitung. ich habe ein Netzwerk Share auf dem Ascii Files
liegen.
Diese werden zyklisch beschrieben. Leider mit einem alten Tool das auch noch
in einer VM Dos Box oder so làuft.
Wie genau das ablàuft kann ich leider nicht mehr feststellen. Quellcode ist
nicht verfügbar. Ist mal in Pascal geschrieben worden oder so.
Auf jeden Fall wird ca alle 30sec eine Zeile in der Ascii Datei angefügt.
Um diesem Programm so wenig wie möglich in die Quere zu kommen habe ich mir
kurzerhand gedacht ich kopiere das File
einfach zyklisch weg. Dann müsste ich ja dem Programm praktisch nciht in die
Quere kommen oder? Dachte ich zumindest.

Fakt ist auf jeden Fall seit einer Umstellung der Daten Server Hardware und
damit Software von Win NT4 auf Win 2003 Server
habe ich Probleme mit den Files.
Es scheint so, dass wenn der Copy Befehl mit einem Schreibbefehl des anderen
Tools zusammen fàllt, bekommt das andere Tool eine Fehlermeldung und fàngt
eine neue Datei an. (Was natürlich unerwünscht ist.)
Kann es sein, dass die Copy Methode einen Exclusiven Zugriff auf das File
erstellt?
Hab mal versucht was zu simmulieren, aber wenn ich ein Stream Objekt auf ein
File erstelle mit exclusiven Zugriff,
und dann ohne Close versuche dieses File zu kopieren geht das ohne Probleme
...
Ich weis nicht wo genau das Problem liegt. Gibts da vielleciht irgend eine
komische Win2003 Richtlinie die sowas verhíndert?
Oder gibts einen "besseren" Copy Befehl in c# der vielleicht die Datei nicht
exclusiv sperrt.
Ich weis ist schlecht beschrieben aber ist auch schwer.

Wie gesagt es geht darum so schmerzlos wie möglich das File zu kopieren ohne
dem anderen Programm den Zugriff zu verhindern.

Hat da einer eine Idee?

Nochmal kurz die Eckdaten.
Server mit den Daten ist ein "Win2003 Server" Host mit 3 Virtuellen "Win2003
Server" als Client.
Auf den Virtuellen Systemen liegen Ascii Files.

Mit einem Client System "WinXP" greife ich per Netzshare zu. Hab das Client
System schonmal durch ein Win2k Server ersetzt.
Gleiches Ergebnis.
Und nach Verbinden des Netzshare kopiere ich ein paar Dateien.

Die, die ich nicht kopiere zeigen keine Fehler, also schließe ich jetzt mal
das Verbinden usw aus.
Vor dem Copy Befehl mach ich noch eine File.Exists.
Werd mal den Copy Befehl auskommentieren und probieren ob die Exist Methode
das Problem ist, aber glaube nicht daran.

Danke

mfg
Stephan
 

Lesen sie die antworten

#1 Karo Schweizer
11/06/2009 - 07:07 | Warnen spam
hallo stephan

"Stephan Stone" schrieb im Newsbeitrag
news:
Hi zusammen,

Hab ein sehr komisches Problem bei der File Copy Methode in c#.

Mal kurz zur Einleitung. ich habe ein Netzwerk Share auf dem Ascii Files
liegen.
Diese werden zyklisch beschrieben. Leider mit einem alten Tool das auch
noch in einer VM Dos Box oder so làuft.
Wie genau das ablàuft kann ich leider nicht mehr feststellen. Quellcode
ist nicht verfügbar. Ist mal in Pascal geschrieben worden oder so.
Auf jeden Fall wird ca alle 30sec eine Zeile in der Ascii Datei angefügt.
Um diesem Programm so wenig wie möglich in die Quere zu kommen habe ich
mir kurzerhand gedacht ich kopiere das File
einfach zyklisch weg. Dann müsste ich ja dem Programm praktisch nciht in
die Quere kommen oder? Dachte ich zumindest.

Fakt ist auf jeden Fall seit einer Umstellung der Daten Server Hardware
und damit Software von Win NT4 auf Win 2003 Server
habe ich Probleme mit den Files.
Es scheint so, dass wenn der Copy Befehl mit einem Schreibbefehl des
anderen Tools zusammen fàllt, bekommt das andere Tool eine Fehlermeldung
und fàngt eine neue Datei an. (Was natürlich unerwünscht ist.)
Kann es sein, dass die Copy Methode einen Exclusiven Zugriff auf das File
erstellt?
Hab mal versucht was zu simmulieren, aber wenn ich ein Stream Objekt auf
ein File erstelle mit exclusiven Zugriff,
und dann ohne Close versuche dieses File zu kopieren geht das ohne
Probleme ...
Ich weis nicht wo genau das Problem liegt. Gibts da vielleciht irgend eine
komische Win2003 Richtlinie die sowas verhíndert?
Oder gibts einen "besseren" Copy Befehl in c# der vielleicht die Datei
nicht exclusiv sperrt.
Ich weis ist schlecht beschrieben aber ist auch schwer.

Wie gesagt es geht darum so schmerzlos wie möglich das File zu kopieren
ohne dem anderen Programm den Zugriff zu verhindern.

Hat da einer eine Idee?

Nochmal kurz die Eckdaten.
Server mit den Daten ist ein "Win2003 Server" Host mit 3 Virtuellen
"Win2003 Server" als Client.
Auf den Virtuellen Systemen liegen Ascii Files.

Mit einem Client System "WinXP" greife ich per Netzshare zu. Hab das
Client System schonmal durch ein Win2k Server ersetzt.
Gleiches Ergebnis.
Und nach Verbinden des Netzshare kopiere ich ein paar Dateien.

Die, die ich nicht kopiere zeigen keine Fehler, also schließe ich jetzt
mal das Verbinden usw aus.
Vor dem Copy Befehl mach ich noch eine File.Exists.
Werd mal den Copy Befehl auskommentieren und probieren ob die Exist
Methode das Problem ist, aber glaube nicht daran.

Danke

mfg
Stephan



ich empfehle dir, die datei nicht zu kopieren, sondern diese nur mit
lese-rechten zu öffnen und zu lesen. was du liest, das speicherst du in die
zieldatei.

als alternative: pascal schreibt jetzt datei A. definiere neu eine datei B.
du machst regelmàssig ein 'rename' von A nach C, und hàngst C an B (danach
C) löschen.

du kannst jetzt B genüsslich interpretieren und störst pascal nicht mehr.
was früher A war, müsste neu B sein.

gruss
karo

Ähnliche fragen