2016-11-22 7 views
0

共通のテキストファイルを読み書きするための2つのJavaScriptファイルがあります。このJavaScriptファイルを同時に実行するタスクスケジューラを作成しました。だから私はスクリプトでロックの概念を実装する必要があります。 JavaScriptにロックの概念が存在しますか?JavaScriptのファイルへの同時書き込みの処理

質問の明確化:

私はnode.jsを使用していません。単にjscriptファイルです。

両方のファイルは、時間午前10時、タスクスケジューラで設定されている

2つのJscriptのファイル、ファイルAとファイルBがあります。

両方のファイルがテキストファイルを読み取っています。D.一部のテキストを更新して、再度書き込みます。

のようなリソースの飢餓が発生した場合、ファイルAとファイルBは同時にテキストファイルDを書き込んでいますが、内容は異なります。

try { 
    var objectFile = new ActiveXObject("Scripting.FileSystemObject"); 
    var writingFile; 

    if(objectFile.FileExists(FileLocation)) 
    { 
     var fileSpecified = objectFile.GetFile(FileLocation); 
     writingFile = fileSpecified.OpenAsTextStream(8, 0); 
    } 

    else 
    { 
     writingFile= objectFile.CreateTextFile(FileLocation, true); 
    } 

    writingFile.WriteLine(Date()); 

    writingFile.WriteLine("test data");  

    writingFile.Close(); 
} 
catch(e) 
{ 
    return true; 
} 
+0

node.jsを使用していますが、このタグは含まれていないようです。あなたのコードと、あなたが解決しようとしている問題を示すことができますか? Javascriptは通常、シングルスレッドなので、どのような形式のロックも必要ありません。 – Keith

+0

私がJavaScriptを知っている限り、少なくともクライアント側ではファイルシステムにアクセスできません – Dellirium

+0

JSを使ってファイルに書き込む方法を教えてください。私はそれがどのように行われたのが不思議です。 – Justinas

答えて

0

FileSystemObjectはファイルロックをサポートしていません。 あなたができることは、書く前にファイルを削除することです。最初はFileLocationに空のファイルを作成する必要があることに注意してください。

try { 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 

    try { 
     fso.DeleteFile(FileLocation); // Will throw if file does not exist 
     var writingFile= fso.CreateTextFile(FileLocation); 
     writingFile.WriteLine(Date()); 
     writingFile.WriteLine("test data");  
     writingFile.Close(); 
    } catch(e) { 
     // File did not exist, so somebody is currently writing it. 
    } 
} 
catch(e) 
{ 
    return true; 
} 

追記トリックもあり、 もHow can I determine if a file is locked using VBS?参照してください参照してください。 ただし、追加したくない場合はこれを使用しないでください。

+0

答えをありがとう –

関連する問題