Wenn ich versuche, eine Datei zu löschen, aber gleichzeitig ein anderer Prozess eine File.Exists(...) für dieselbe Datei ausführt, wird dadurch möglicherweise die Datei gesperrt und mein Prozess scheitert?
Antworten
Zu viele Anzeigen?Nein, File.Exist() prüft nur, ob sich die betreffende Datei im Dateisystem unter dem angegebenen Pfad befindet. Sie greift nicht auf die Daten oder Header der Datei zu, so dass die Datei nicht gesperrt wird.
Nebenbei bemerkt: Selbst das Öffnen einer Datei führt nicht zwangsläufig dazu, dass sie gesperrt wird. Das hängt von den Zugriffsparametern ab, die Sie beim Öffnen wählen.
Nein, File.Exist sperrt die Datei nicht. Ein guter Weg, um zu sehen, was hinter den Kulissen passiert, ist ein Blick auf die Quellcode .
Holen Sie sich den Quellcode der Basisklassenbibliotheken des .Net Frameworks und sehen Sie sich an, was hinter den Kulissen vor sich geht. Insbesondere die Klasse System.IO.File hat einige sehr interessante Standardeinstellungen für die Dateiverarbeitung, das Sperren, Freigeben usw. In Fällen wie dem Ihren kann ein Blick auf die Quelle dessen, was hinter den Kulissen geschieht, den entscheidenden Unterschied bei der Gestaltung Ihrer Anwendung ausmachen.
Siehe den Link:
Was kann ich mit der Shared Source CLI tun? Die Shared Source CLI enthält eine Fülle von Technologien für Programmiersprachen. Sie dürfte für ein breites Publikum von Interesse sein, darunter:
- Entwickler, die sich für die interne Funktionsweise von .NET Framework interessieren, können diese Implementierung der Befehlszeilenschnittstelle erkunden, um zu sehen, wie die Garbage Collection funktioniert, wie die JIT-Kompilierung und -Verifizierung gehandhabt wird, wie Sicherheitsprotokolle implementiert werden und wie Frameworks und virtuelle Objektsysteme organisiert sind.
- Lehrkräfte und Forscher, die mit fortgeschrittener Compilertechnologie arbeiten. Forschungsprojekte zu Spracherweiterungen, JIT-Optimierungen und moderner Garbage Collection haben alle eine Grundlage in der Shared Source CLI. Moderne Compiler-Kurse können auf den Sprachen C# oder JScript basieren, die auf dem CLI implementiert sind.
- Wer eigene CLI-Implementierungen entwickelt, findet in der Shared Source CLI einen unverzichtbaren Leitfaden und eine Ergänzung zu den ECMA-Standards.
Dies ist eine Antwort an anu - und an alle, die etwas Ähnliches mit Dateien machen.
Es ist ziemlich wichtig, auf Dateien mit einer using-Anweisung zuzugreifen. Dadurch wird sichergestellt, dass Sie Ihren Verweis auf die Datei ordnungsgemäß entsorgen.
using (var fs = File.OpenRead(path)) {
// Do something
}