Laden...

Lesen und Schreiben einer (CSV-)Datei ohne Sperre

Erstellt von DiscMaster vor 9 Jahren Letzter Beitrag vor 9 Jahren 4.009 Views
DiscMaster Themenstarter:in
316 Beiträge seit 2006
vor 9 Jahren
Lesen und Schreiben einer (CSV-)Datei ohne Sperre

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

D
615 Beiträge seit 2009
vor 9 Jahren

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

3.825 Beiträge seit 2006
vor 9 Jahren

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

F
10.010 Beiträge seit 2004
vor 9 Jahren

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.

4.221 Beiträge seit 2005
vor 9 Jahren

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...

C
2.121 Beiträge seit 2010
vor 9 Jahren

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.

49.485 Beiträge seit 2005
vor 9 Jahren

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

4.221 Beiträge seit 2005
vor 9 Jahren

@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...