Gude zusammen,
an einem Institut von der Uni wurde ich gerade mit folgendem Problem betraut:
Für teils mehrwöchige Versuchsreihen werden von einer Software Messdaten aufgenommen und in eine CSV-Datei geschrieben. Damit die Leute sich die bisherigen Daten noch während des Versuchs bereits betrachten und analysieren können, würden sie ganz gerne vor Versuchsabschluss immermal mit der Datei arbeiten. Um das Programm nicht zu nerven, war die Idee, die Ausgabedatei bei Bedarf zu kopieren um dann damit zu arbeiten.
Das auftretende Problem ist naheliegend: Während die mitunter recht große Datei kopiert wird, versucht das Messprogramm reinzuschreiben und stürzt ab. Die neue Idee wäre jetzt, dass man die Datei immer wieder versucht zu öffnen, wenn sie gerade frei ist, wird der neue Text kopiert. Ansonsten wird in einer Dauerschleife gewartet bis die Datei frei ist bzw. neue Daten enthält.
Daher also meine Frage: Gibt es mit C# eine Möglichkeit in einer Datei zu lesen, ohne dass der Schreibzugriff gesperrt wird?
Danke!
"Flache Hierarchien schaffen! Das muss konkret nicht unbedingt etwas bedeuten, kommt aber immer sehr gut an."
Bernd Stromberg
Hallo DiscMaster
Gibt es mit C# eine Möglichkeit in einer Datei zu lesen, ohne dass der Schreibzugriff gesperrt wird?
Stackoverflow -> Read file without locking ?
Coding Blog -> How do open a file taht is in use ?
P.S.
_
=> Warum nimmst du nicht eine Datenbank ? ( Kann auch auch was wie SQL-Lite sein )._
Beste Grüsse
Diräkt
Du kannst die Datei auch erst umbenennen und dann kopieren.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Das problem ist aber meist das die schreibende SW da nicht dran gedacht hat und exclusiv öffnen will.
Dann bleibt wirklich nur erst umbenennen und dann ( wie auch immer ) verarbeiten.
Wirf mal Google an 😃
z.B: RawCopy (selber NICHT getestet) kann gesperrte Files kopieren...
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Eine Alternative wäre, wenn das schreibende Programm die Kopie selbst macht. Erst schreiben, dann in gewissen Intervallen die Datei kopieren. Das Programm muss sich solange die Daten merken oder sie in eine andere Datei schreiben damit sie nicht verloren gehen.
Hallo Programmierhans, hallo zusammen,
z.B: RawCopy (selber NICHT getestet) kann gesperrte Files kopieren...
nach der Beschreibung ist das Kopieren nicht das Problem. Es klingt so, als wäre die Datei zu diesem Zeitpunkt geschlossen. Das Problem entsteht, wenn während des Kopierens die Datei vom Programm (wieder geöffnet) und geschrieben werden soll. Daher greift, was FZelle gesagt hat:
Das problem ist aber meist das die schreibende SW da nicht dran gedacht hat und exclusiv öffnen will.
Dann bleibt wirklich nur erst umbenennen und dann ( wie auch immer ) verarbeiten.
Wenn man das Programm ändern kann, kann man stattdessen auch den richtigen/passenden FileShare-Mode verwenden. Gleichzeitiger Zugriff ist nur möglich, wenn beide Seite einen kompatiblen FileShare-Mode verwenden (von Schattenkopien, die hier aber wohl nicht nötig sind, mal abgesehen).
Wenn es wirklich darum geht, eine gesperrte Datei zu kopieren, habe ich festgestellt, dass man mit dem Kommando type mit Umlenkung in eine andere Datei mitunter auch Dateien kopieren kann, bei denen copy oder xcopy versagt.
herbivore
@herbivore
Ich gehe davon aus, dass Tools wie RawCopy ähnliche Mechanismen wie Backup-Tools verwenden... d.h: Dass sie Files in einer Art kopieren welche selber auch keine Sperren setzen... selber aber gesperrte Files kopieren können.
Gruss
Programmierhans
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...