2009-06-30 13 views
0

Wie kann ich überprüfen, ob eine Datei bereits von einem anderen Benutzer in Javascript geöffnet ist? Wie es jetzt ist, wird das Programm, das ich zu beheben versuche, eine Datei öffnen/bearbeiten und dann beim Speichern fehlschlagen, wenn die Datei bereits verwendet wird.Erkennen, ob eine Datei in Javascript bereits geöffnet ist

Gibt es auch eine einfache Möglichkeit, eine Sperre für die Datei hinzuzufügen, damit ein anderer Prozess weiß, dass sie verwendet wird?

Edit: Das Programm ist eine HTA mit Active X Objects.

Ich denke, ich hätte genauer gesagt werden sollen, hier ist ein Code zum Öffnen/Bearbeiten/Speichern der Dateien.

var FileSystem = new ActiveXObject("Scripting.FileSystemObject"); 
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0"); 
var fFile = FileSystem.GetFile(strPath); 
xmlDoc.load(fFile.Path); 
// some method's to edit documentElement in xmlDoc... 
xmlDoc.save(fFile.Path); 
+2

Sie können keinen Dateizugriff in Javascript durchführen, oder? – skaffman

+2

Welche Art von Umgebung? In einem Browser? Als Skript auf etwas anderem laufen? Über die CLR/.NET? – swilliams

+2

@skaffman, ja, aber Sie müssen Java verwenden, um es zu tun. – Malfist

Antwort

1

Ich bin nicht mit ActiveX vertraut, aber vielleicht, wenn Sie eine Datei öffnen, könnten Sie eine temporäre Datei wie file.ext.lock erstellen (und löschen, wenn Sie die Datei speichern), wenn ein anderer Benutzer versucht, zu öffnen die gleiche Datei und sieht die .lock-Datei existiert, wissen Sie, dass es verwendet wird.

+0

das funktioniert, aber ich habe Probleme beim Entsperren/Löschen der Datei, wenn der Benutzer eine Datei öffnet, schließt dann das gesamte Programm, anstatt die Datei zuerst zu schließen. –

3

Sind Sie sicher, dass es sich nur um JavaScript handelt und nicht um eine Kombination aus einer ActiveX- oder Flash-Komponente? Ist die Datei auf dem Client oder Server? Wenn Server, diese Frage macht mehr Sinn für mich (dh mit einigen AJAX-Lösung).

1

Sie würden wahrscheinlich eine serverseitige Sperrfunktion benötigen. Das Javascript würde das "Speichern" -Skript des Servers aufrufen, das entweder einen "erfolgreichen" Status oder "Datei gesperrt" zurückgeben würde.

Die einfachste Lockmethode, die die meisten Programme verwenden, ist das Erstellen einer anderen Datei mit dem gleichen Namen, aber einer Erweiterung wie ".lock". Ein Prozess prüft, ob die Datei beim Öffnen des Originals vorhanden ist. Wenn dies der Fall ist, wird die Datei verwendet und kann nur als schreibgeschützt geöffnet werden. Wenn nicht, wird die Sperrdatei erstellt und das Original kann bearbeitet werden.

0

öffnet/bearbeitet eine Datei und schlägt beim Speichern fehl.

Javascript kann Dateien nicht öffnen oder speichern.
Das könnte dein Problem sein.

Es könnte sie "bearbeiten" - Sie können JS verwenden, um eine HTML-Seite zu bearbeiten oder zu bearbeiten. [Sogar einen ganzen Rich Text Editor ausführen.]

Aber Sie müssen dann die Seite zurück zu einem anderen Skript übergeben, um diese Änderungen tatsächlich zu speichern.

Das ist eigentlich nicht wahr, wenn Sie Aptana oder ähnliches serverseitiges Javascript haben, oder wenn es [mozdev] verwendet wird, um Daten an SQLite zu übergeben, das seine eigenen Daten speichern kann. Wenn dies der Fall ist, sollten Sie angeben, da es sich um eine typische Javascript-Verwendung handelt.

Verwandte Themen