我有两个用于读取和编写公共文本文件的JavaScript文件。创建了一个任务调度程序,以便同时运行此JavaScript文件。所以我需要在脚本中实现锁定概念。 JavaScript中是否存在任何锁定概念?
更多关于问题的澄清:
我没有使用node.js.只是它是一个jscript文件。
有两个Jscript文件,文件A和文件B.
这两个文件都是由任务计划程序在上午10点配置的。
两个文件都在读取文本文件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 :(得分: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?。 但如果您不想追加,则无法保存。