2010-11-29 9 views
0

Ich habe Code, der aus einer Ini-Datei in Javascript liest, mit ActiveX-Dateisystem-Objekte.Verwenden von scripting.filesystemobject in Javascript und Überprüfung auf gesperrte Dateien

Dies ist nicht besonders effizient, aber macht den Job, die gesamte Datei in ein Array lesen, Änderungen anhängen und zurückschreiben.

Das Problem, das ich habe ist, dass ein anderer Prozess, eine C# XBAP-Anwendung liest aus dieser Ini-Datei (getprivateprofilestring) gleichzeitig mit dem ich möglicherweise versuchen würde, um es in der JS zu schreiben.

Das Javascript schlägt fehl, da die Datei gesperrt ist, oder ein Teil davon, und die Datei wird beschädigt oder sogar vollständig gelöscht - da ich versuche, die ganze Datei jedes Mal zurückzuschreiben.

Vorzugsweise, was ich brauche, ist eine Möglichkeit zu bestimmen, ob eine Datei in Javascript gesperrt ist, da die Schreibvorgänge nicht dringend sind und ich möchte, dass alle Lesevorgänge zuerst beendet werden.

Einfach scheint nicht zu finden, diese beiden völlig separaten Möglichkeiten des Zugriffs auf die Datei zu synchronisieren.

+0

Können Sie Ihren JS-Code und vielleicht auch die C# -Post veröffentlichen? – powtac

+0

Es gibt kein Problem von JS Seite. Überlegen Sie, andere Seite zu reparieren, indem Sie GetPrivateProfileString vermeiden –

Antwort

1

Möglicherweise können Sie try/catch verwenden. Wenn Sie die Datei zum Anhängen öffnen (OpenTextFile([filename],8)), sollte eine Ausnahme ausgelöst werden. Dasselbe gilt für das Schreiben/Speichern der Datei (wenn die Datei gesperrt ist, löst try eine Ausnahme aus).

+0

Ja, ich denke an etwas wie das, das Problem ist, es scheint zu spät zu diesem Zeitpunkt zu sein, da die Datei bereits abgeschnitten ist. Ich frage mich, ob ich die Datei zum Anhängen zuerst geöffnet habe, versucht habe, eine Zeile zu schreiben und wenn das gescheitert ist, könnte ich die ganze folgende Schreiboperation abbrechen, das könnte vielleicht funktionieren? –

+0

Ok, leider scheint das Anhängen nicht zu versagen, nur das normale Schreiben. Es scheint, dass nur ein bestimmter Abschnitt der Datei gesperrt ist, nicht das Ganze? Ich bin nicht wirklich sicher, wie getprivateprofile Zeichenkette seine Datei sperrt. –