2009-06-30 2 views
0

javascriptで別のユーザーがファイルを開いているかどうかを確認するにはどうすればよいですか?今のところ、私が修正しようとしているプログラムは、ファイルを開いたり編集したりして、ファイルがすでに使用中であれば保存しようとして失敗します。ファイルがすでにjavascriptで開かれているかどうかを検出する

また、別のプロセスが使用中であることを知るためにファイルにロックを追加する簡単な方法はありますか?

編集:プログラムは、Active X Objectsを使用する.htaです。

私はより具体的なはずでした。ここでは、ファイルのオープン/編集/保存方法に関するいくつかのコードがあります。

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

あなたはjavascriptでファイルへのアクセスを行うことはできませんか? – skaffman

+2

どのような環境ですか?ブラウザでは?何かのスクリプトとして実行している? CLR/.NET経由ですか? – swilliams

+2

@skaffman、はい、でもそれを行うにはJavaを使用する必要があります。 – Malfist

答えて

1

私はあまりActiveXに慣れていませんが、ファイルを開くときに、file.ext.lockのような一時ファイルを作成して(ファイルを保存するときに削除する)、別のユーザーが開こうとすると同じファイルが存在し、.lockファイルが存在するとわかると、そのファイルが使用されていることがわかります。

+0

これはうまくいきますが、ユーザーがファイルを開いたときにファイルのロックを解除/削除してから、まずファイルを閉じるのではなくプログラム全体を閉じます。 –

3

JavaScriptだけで、ActiveXコンポーネントやFlashコンポーネントのコンボではないですか?ファイルはクライアントまたはサーバー上にありますか?サーバーの場合、この質問は私にはもっと合理的です(つまり、いくつかのAJAXソリューションを使用しています)。

1

おそらくサーバー側のロック機能が必要です。 javascriptはサーバーの「保存」スクリプトを呼び出し、「成功」ステータスまたは「ファイルロック」のいずれかを返します。

ほとんどのプログラムで使用される最も単純なロック方法は、同じ名前で拡張子が「.lock」の別のファイルを作成することです。プロセスは、元のファイルを開いているときにファイルが存在するかどうかをチェックし、ファイルが使用中の場合は読み取り専用としてのみ開くことができます。そうでない場合は、ロックファイルが作成され、元のファイルを編集できます。

0

ファイルを開いたり編集したりして保存しようとすると失敗します。

Javascriptではファイルを開いたり保存したりすることはできません。
これは問題の可能性があります。

JSを使用してHTMLページを操作または編集することができます。 [リッチテキストエディタ全体を実行していても]

しかし、これらの変更を実際に保存するには、別のスクリプトにページを戻す必要があります。

これはAptanaなどのサーバーサイドのJavascriptを使用している場合、または[mozdev]を使用して自分のデータを保存できるSQLiteにデータを渡している場合は実際には当てはまりません。これがあなたのケースである場合は、それは典型的なJavascriptの使用法であるため、指定する必要があります。

関連する問題