Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#21

AW: Wie feststellen, ob eine Datei gelesen werden kann?

  Alt 17. Apr 2016, 16:27
Da wäre eine Routine recht praktisch, mit der man (direkt, also nicht durch Rückschlüsse) herausfinden kann, mit welchen Flags eine Datei geöffnet ist. Gibt's denn sowas?
Eventuell, aber wofür? Wenn du die Datei in einem Programm öffnen willst, wirst du ja schon sehr genau wissen, was due machen musst. (ALso ob der Bneutzer Öffnet oder speichert)

Und das einzige, was hier sinnvoll ist, ist die Aktion zu probieren. Und wenn es nicht ging, dann gab es wohl ein Problem und man kann eine Fehlermeldung anzeigen. Die Info, ob eine Datei schreibbar ist, ist ja in dem Moment schon veraltet (und damit nutzlos) in dem die sie bekommst. Stell dir eine Anwendung vor, die 10 Mal pro Sekunde eine Datei exklusiv zum schreiben öffnet, eine Zeile schreibt und wieder schließt. Doofes Programm, aber kann man machen. Und du versuchst, die gleiche Datei zu öffnen.
Wenn du dann sowas machst wie
Delphi-Quellcode:
if IsFileReadable(AHTMLFile) then
  ThisHTMLStr := TFile.ReadAllText(AHTMLFile)
else
  LogThisError;
Ist dein Programm instabil, weil es dennoch zu einer Exception kommen kann!
Denk' immer dran, dein Programm kann jederzeit unterbrochen werden. Und bevor du wieder drankommst können potenziell alle anderen Prozesse im System laufen.


Und dann bin ich gerade noch auf opportunistic locks gestoßen. EIn Programm kann damit eine Datei zum schreiben öffnen und wird benachrichtigt, wenn ein zweites Programm schreiben möchte um dann seinen Zugriff zu beenden.
Es könnte also sein, dass die Datei zwar in Verwendung ist, du aber den Schreibzugriff trotzdem bekommst, wenn du fragst

Geändert von jfheins (17. Apr 2016 um 17:09 Uhr)
  Mit Zitat antworten Zitat