代码之家  ›  专栏  ›  技术社区  ›  jb.

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

  •  0
  • jb.  · 技术社区  · 15 年前

    如何检查另一个用户是否已经用javascript打开了一个文件?现在,我正在尝试修复的程序将打开/编辑一个文件,如果该文件已在使用中,则在尝试保存时失败。

    另外,是否有一种简单的方法可以在文件上添加锁,以便另一个进程知道它正在使用?

    编辑:程序是一个.hta,使用活动的x对象。

    我想我应该更具体一些,这里有一些关于如何打开/编辑/保存文件的代码。

    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 回复  |  直到 15 年前
        1
  •  1
  •   Detect    15 年前

    我对ActiveX不太熟悉,但是当您打开一个文件时,您可能会创建一个临时文件,如file.ext.lock(并在保存该文件时将其删除),因此当另一个用户试图打开同一个文件并看到.lock文件存在时,您就知道它正在被使用。

        2
  •  3
  •   Detect    15 年前

    你确定它只是一个javascript,而不是一个ActiveX或Flash组件的组合?文件在客户机或服务器上吗?如果是服务器,这个问题对我更有意义(例如,使用Ajax解决方案)。

        3
  •  1
  •   gapple    15 年前

    您可能需要服务器端锁定功能。javascript将调用服务器的“save”脚本,该脚本将返回“successful”状态或“file locked”。

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

        4
  •  0
  •   SamGoody    15 年前

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

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

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

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

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