检测文件是否已在javascript中打开

时间:2009-06-30 20:46:57

标签: javascript activex

如何在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 );

4 个答案:

答案 0 :(得分:3)

您确定它只是JavaScript而不是ActiveX或Flash组件的组合吗?该文件是客户端还是服务器上的?如果服务器,这个问题对我来说更有意义(即使用一些AJAX解决方案)。

答案 1 :(得分:1)

您可能需要服务器端锁定功能。 javascript会调用服务器的“保存”脚本,该脚本将返回“成功”状态或“文件锁定”。

大多数程序使用的最简单的锁定方法是创建另一个具有相同名称但扩展名为“.lock”的文件。进程在打开原始文件时检查文件是否存在,如果是,则文件正在使用中,并且只能以只读方式打开。如果没有,则创建锁定文件并编辑原件。

答案 2 :(得分:1)

我不太熟悉ActiveX,但是当你打开一个文件时,你可以创建一个像file.ext.lock这样的临时文件(并在保存文件时删除它),所以当另一个用户试图打开相同的文件并且看到.lock文件存在,你知道它正被使用。

答案 3 :(得分:0)

  

将打开/编辑文件,然后尝试保存失败。

Javascript无法打开文件或保存文件 这可能是你的问题。

它可以“编辑”它们 - 您可以使用JS来操作或编辑HTML页面。 [甚至运行整个富文本编辑器。]

但是,您必须将页面传递回其他脚本以实际保存这些更改。

如果您使用Aptana或类似的服务器端Javascript,或者正在使用[mozdev]将数据传递给可以保存自己数据的SQLite,则实际上并非如此。如果是这种情况,您应该指定,因为它几乎不是典型的Javascript用法。