Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox addon 使用OS.File测试路径是否已锁定?_Firefox Addon - Fatal编程技术网

Firefox addon 使用OS.File测试路径是否已锁定?

Firefox addon 使用OS.File测试路径是否已锁定?,firefox-addon,Firefox Addon,使用OS.File我可以打开一个带锁的文件: let options = { winShare: 0 // Exclusive lock on Windows }; if (OS.Constants.libc.O_EXLOCK) { // Exclusive lock on *nix options.unixFlags = OS.Constants.libc.O_EXLOCK; } let file = yield OS.File.open(..., options); 是否可以测

使用
OS.File
我可以打开一个带锁的文件:

let options = {
  winShare: 0 // Exclusive lock on Windows
};
if (OS.Constants.libc.O_EXLOCK) {
  // Exclusive lock on *nix
  options.unixFlags = OS.Constants.libc.O_EXLOCK;
}
let file = yield OS.File.open(..., options);
是否可以测试路径是否已锁定。我正在寻找
nsiToolkitProfile.lockProfile

这是复制粘贴到草稿行代码。顶部块使用
nsitoolkitprofile
测试是否锁定。而且效果很好。第二部分使用
OS.File.open
,它总是抛出错误

Cu.import('resource://gre/modules/osfile.jsm');
Cu.import('resource://gre/modules/FileUtils.jsm');
var tps = Cc['@mozilla.org/toolkit/profile-service;1'].createInstance(Ci.nsIToolkitProfileService); //toolkitProfileService

var folderOfProfile = 'k46wtieb.clean'; //folder names of relative profiles found here: %APPDATA%\Mozilla\Firefox\Profiles

var rootPathDefault = FileUtils.getFile('DefProfRt', []).path;
var localPathDefault = FileUtils.getFile('DefProfLRt', []).path;

var aDirect = new FileUtils.File(OS.Path.join(rootPathDefault, folderOfProfile));
var aTemp = new FileUtils.File(OS.Path.join(localPathDefault, folderOfProfile));
try {
    var locker = tps.lockProfilePath(aDirect, aTemp)
    Services.ww.activeWindow.alert('NOT open');
    locker.unlock();
} catch (ex) {
    if (ex.result == Cr.NS_ERROR_FILE_ACCESS_DENIED) {
        Services.ww.activeWindow.alert('its in use');
    } else {
        throw ex;
    }
}

var promise = OS.File.open(aDirect.path)
promise.then(
    function(aVal) {
        Services.ww.activeWindow.alert('promise success, aVal = ' + aVal);
        aVal.close();
    },
    function(aReason) {
        Services.ww.activeWindow.alert('promise rejected, aReason = ' + uneval(aReason));
    }
)

承诺总是在
区域内被拒绝。因为每次访问被拒绝时:(

只要试着打开它……如果你因为权限原因无法打开,那么文件可能被锁定在另一个位置。

每当我打开一个文件夹时,尽管它总是被拒绝,但请查看我的试用更新问题哦,我忘了提到:承诺总是被拒绝,带有
区域。因为每次访问都被拒绝,无论它是否被拒绝s open or nothine@nmaier你能对我的更新发表评论吗:(更新:这只适用于windows。对于Mac OS和Linux,我必须使用
fcntl
。对于Firefox配置文件锁,如果
fcntl
失败,我必须使用
readlink
读取它们的符号链接锁协议。改编自: