问题标签 [file-locking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 删除已被 WPF 控件使用的图像
我想将图像绑定到某种控件,然后再将其删除。
现在,在此代码之后,我想删除该文件:
但我不能这样做,因为现在正在使用该图像。在代码片段 1 和 2 之间我可以做些什么来释放它?
.net - 文件被哪个进程锁定?
.Net 中有没有办法准确找出哪个进程锁定了文件?
编辑:我这样做是因为我想让我的用户知道他们无法修改/打开文件,因为目前,他们正在使用的另一个程序(如 Excel)已将其打开。希望这会有所帮助。
java - 在 Windows 和 Java 中删除文件锁定
我有一个使用 RandomAccessFile 类打开文件的 Java 程序。
我希望能够在 Java 打开该文件时重命名该文件。在 Unix 中,这不是问题。有谁知道我如何在 Windows 中做到这一点?
我应该设置Java以某种方式打开它吗?
提前致谢。
编辑,澄清:我希望能够在我的 Java 代码中设置此文件共享访问权限。
c# - 通过网络共享锁定行为不同
我一直在尝试锁定文件,以便其他克隆服务无法访问该文件。然后我读取文件,然后在完成后移动文件。使用 允许移动FileShare.Delete
。
但是在后来的测试中,我们发现如果我们正在查看网络共享,这种方法不起作用。我很欣赏我的方法可能不是最好的,但我的具体问题是:
为什么下面的演示适用于本地文件,而不适用于网络文件?
越具体越好,因为我在搜索中发现的信息很少,表明网络共享的行为与本地磁盘不同。
编辑:值得一提的是,如果您希望在锁定到位时将文件从一个网络共享移动到另一个网络共享,这是可行的。只有在锁定同一文件共享时移动文件时才会出现此问题。
c++ - std::ifstream 是线程安全且无锁的吗?
我打算使用 std::ifstream 执行打开以从多个线程中读取单个文件。我担心的是 std::ifstream 是否是线程安全且无锁的?
更多细节:
- 我在 Ubuntu 和 Windows XP 上使用 g++ 4.4,在 Leopard 上使用 4.0。
- 每个线程创建自己的 std::ifstream 实例
提前致谢!
windows - 在远程机器(Windows)上锁定文件的简单方法?
我在日志中发现了一个错误,并试图重现它。我的理论是文件有时会被锁定在特定文件夹中,当应用程序 (ASP.NET) 尝试删除该文件夹时,它会挂起。
我没有在我自己的机器上运行应用程序,所以我在远程服务器上调试它。但是对于我的生活,我似乎无法找到一种方法来锁定文件以防止它被进程删除。
我的第一个想法是将网络路径映射到本地驱动器,然后将命令提示符打开到该文件夹。在本地,这总是会破坏我的文件夹删除,但显然 SMB 更强大一些,并且不会授予我锁定权限。
之后,我在文件夹中创建了一个无限循环 vbscript 并远程执行它。该文件已从执行代码下方删除。男人!
然后我尝试在该文件夹中的服务器上创建一个文件并删除所有权限。那没有成功。我无权访问 IIS 设置,因此它可能在特权系统帐户下运行。
那么:你知道有什么程序是免费的,我可以快速使用它来在文件上创建排他锁,以便我可以测试我的删除理论?就像一个非常非常糟糕的记事本克隆或其他东西。
:-)
php - PHP检查文件是否被flock()锁定?
fopen()
如果文件存在,但当前被锁定,则会失败LOCK_EX
?
还是我必须打开它,然后尝试设置一个锁,以确定是否已经存在?
我也读过那份flock()
遗嘱;
暂停 [脚本] 直到您无限期地获得锁定或直到您的脚本超时
如果是这样,是否可以绕过这种“暂停”?
vb.net - ASP.NET 如何等待文件上传/发布?
我有用 VB 编写的 ASP.NET 内部网应用程序。它从用户那里获取一个文件,然后根据一些不同的情况,它可能会创建文件的几个副本以及移动原始文件。
不幸的是,我遇到了一个出现此错误的情况:
这是由My.Computer.FileSystem.CopyFile
. 这很好,它被另一个进程使用 - 它可能仍在从用户保存/下载或尝试复制,而另一个线程(?)正在复制,我真的不在乎,我想知道什么:
有什么方法可以告诉 VB 等待复制(也移动)文件,直到文件不再使用?
谢谢
java - 为 VM 中的单个线程锁定文件
我有多个线程将我的“数据”对象序列化为文件。文件名基于对象中的 2 个字段
2 个 Data 对象可能具有相同的“时间”和“标题”,因此文件名也相同。
这是可以接受的,我很高兴两者都得救。(如果它们相同,它们可能是相同的 Data 对象)
我的问题是两个(或更多)线程同时写入文件,导致 XML 格式错误。
我查看了 java.nio.channels.FileLock,但它适用于 VM-Wide 锁定,特别不适合线程内锁定。
我可以在 DataIO.class 上同步(但这会导致巨大的开销,因为我真的只想在单个文件上同步)。
对 File 对象进行同步是没有用的,因为多个 File 对象可以代表同一个 System-File。
代码如下:
c# - C# 中的日志文件锁定问题
我有一个将日志文件条目写入 XML 日志文件的 Windows 服务。我在服务运行时维护日志文件的句柄,并在服务停止时关闭、刷新和处置它。文件写入操作仅由服务进行,我在 FileAccess.ReadWrite 中打开文件流,而共享设置为 FileShare.Read。我希望能够通过另一个应用程序的 XmlRead() 调用打开和查看此文件,但我收到一条错误消息,指出该文件正在被另一个进程使用。我读过另一篇关于此的帖子,并认为这是可能的:Other Thread。
正在使用的写入器被刷新、关闭和处置,并且每次写入文件流都会被刷新。这在.Net中是不可能的,还是我做错了什么?代码的缩减版本如下:
现在的文件打开代码如下: