ich das Handbuch für stat
Methode here Lesen und es sagt:Warum wird mit fstat nicht
Mit fs.stat() für die Existenz einer Datei zu überprüfen, bevor Aufruf fs.open (), fs.readFile() oder fs.writeFile() wird nicht empfohlen. Stattdessen sollte der Benutzercode die Datei direkt öffnen/lesen/schreiben und den Fehler behandeln, wenn die Datei nicht verfügbar ist.
Um zu überprüfen, ob eine Datei existiert, ohne sie später zu bearbeiten, wird fs.access() empfohlen.
Also, ich habe zwei Fragen bekommen:
Warum mit Fehlerbehandlungs Art und Weise über
fs.stat()
bevorzugt wird für die Datei Existenz zu überprüfen?Und da ich
fs.access()
verwenden kann, um auf Datei Existenz zu überprüfen, isterror handler
Mechanismus immer noch bevorzugte Möglichkeit, um sicherzustellen, Datei geöffnet ist?
Ich glaube, ich habe eine Antwort auf die zweite Frage gefunden:
Mit fs.access() für die Zugänglichkeit einer Datei zu überprüfen, bevor Aufruf fs.open(), fs. readFile() oder fs.writeFile() wird nicht empfohlen. Dies führt zu einer Race Condition, da andere Prozesse möglicherweise den Status der Datei zwischen den beiden Aufrufen ändern . Stattdessen sollte der Benutzercode die Datei direkt öffnen/lesen/schreiben und den Fehler beheben, wenn die Datei nicht zugänglich ist.
So wahrscheinlich fs.open()
Blöcke für andere Prozesse Datei, während fs.stat()
und fs.access()
einfach Informationen anfordern und andere Prozesse können immer noch/ändern, um die Datei löschen.
Es sei denn, der Autor dieser Dokumente hat eine Erklärung dafür geschrieben, warum irgendwo (weil sie nicht das Bedürfnis hatten, es in der Dokumentation zu erklären), alle spekulieren können, was hier auf SO nicht wirklich nützlich ist. Zum Beispiel ist eine Spekulation, dass es weniger Arbeit macht, als 'fs.stat' muss mehr Informationen über die Datei erhalten. Aber ... –
Getrennt: Ihre Frage ist nur über den * zweiten * zitierten Absatz, oder? Der erste zitierte Absatz hat nichts mit 'fs.access' zu tun (und macht den Grund für * seine * Empfehlung klar). –
[Nützlicher Kommentar] (http://stackoverflow.com/questions/32748530/on-linux-is-access-faster-than-stat#comment53341880_32748530) – robertklep