问题标签 [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.

0 投票
2 回答
1370 浏览

c# - 在写入文件后立即读取文件我得到全零(.net)

我有一个程序需要在写入文件后立即从目录中加载文件。我让 FileSystemWatcher 通知我目录的更改。我没有检查事件的变化,而是列出文件并开始处理我找到的所有内容。

为了防止尝试读取仍在写入的文件,我有如下代码:

问题是对于某些文件,大约 200 个文件中的 1 个,程序读取全零。文件长度正确,但内容似乎全为零字节。当我稍后检查文件时,我发现它确实包含实际正确的数据。我认为我打开文件的方式可以防止过早访问该文件。

我正在通过使用 DOS 命令“copy InFile_0* dropdir”将文件复制到目录来测试这一点(每次执行大约 100 个文件。)这个命令可能分两个步骤进行复制:1)分配空间和 2)填充空间和我的程序偶尔会在两者中间跳转。

关于如何将其编码为可靠的任何想法?

更新: 我无法控制写作程序——它可以是任何东西。看来我必须进行防御性编码。

0 投票
6 回答
2033 浏览

c# - 如何锁定 .net 中的文件,以便只有我的应用程序可以访问它?

我阅读了有关文件锁定的查询,但它们指的是多个文件访问问题或其他问题。对此的通常响应是使用 FileStream.Lock 锁定文件,使用 FileShare.None 和 File.Open 等,但锁定说 100 个文件不是一个好的编程习惯,同样在这些情况下,如果我的应用程序关闭/崩溃,我也不希望锁将被释放,即我希望锁持续存在,只有我的应用程序可以为其他人打开它。

在 msdn 上,我找到了 System.Security、System.Security.AccessControl 命名空间,我相信这些可能会有所帮助。本文还将阐明我想要什么。

编辑::

Mannnnn ...有没有人提到我提供的“这个” 链接。

好的...简而言之,我想要 PC 安全软件的功能。这会响铃吗...有人用过吗????

谢谢。

0 投票
6 回答
62740 浏览

c# - 如何删除另一个进程正在使用的文件?

当我尝试删除文件时发生以下异常:

该进程无法访问文件“”,因为它正被另一个进程使用。

我的代码如下所示:

我怎么解决这个问题?

0 投票
1 回答
1034 浏览

windows - 如何在 Windows 中的文件夹上获得进程独占锁定?

是否可以在Windows中锁定目录以确保在锁定期间没有其他进程正在读取或修改目录内的文件,同时允许具有锁定的进程修改和移动文件和目录自己自由?

0 投票
3 回答
1741 浏览

file-locking - 如果两个不同的程序试图同时写入同一个文件会发生什么?

  1. 如果两个不同的程序试图同时写入同一个文件会发生什么?

  2. 其中一个程序会遇到文件锁定错误吗?

  3. 应该如何设计程序来处理这种情况?

0 投票
1 回答
423 浏览

python - 在 Python 中对 Windows 文件进行 RW 锁定,以便每晚最多运行一个测试实例

我已经用 Python 编写了一个自定义测试工具(由于大量自定义逻辑,现有的东西并不适合)。Windows 任务计划程序每天每小时启动一次。由于我的测试现在需要 2 个多小时才能运行并且还在增长,所以我遇到了问题。现在我只是检查系统时间并且什么都不做,除非hour % 3 == 0,但我不喜欢那样。我有一个文本文件,其中包含:

有时,当我手动启动测试时,它可能随时发生,包括 12:59:59.99 我想尽可能地删除竞争条件。我宁愿付出一些额外的努力,而不用担心发生某事的实际可能性。所以,我认为以原子方式锁定这个文本文件是最好的方法。

我正在使用Python 2.7,Windows Server 2008R2 ProWindows 7 Pro. 我不想安装额外的库(Python尚未“出售”给我的同事,但我可以在本地复制一个实现这一切的文件,前提是许可证允许)。

所以,请提出一个好的,防弹的方法来解决这个问题。

0 投票
1 回答
258 浏览

c# - 防止在 WPF 应用程序中打开文件的多个副本

我有一个 WPF 应用程序,它可以打开和编辑 XML 文件。目前,应用可以多次启动,多个实例可以打开同一个文件。我需要锁定文件,这样,当一个文件打开时,它不会让应用程序的另一个实例打开文件。我尝试在打开文件时使用 FileShare.None 属性以及 FileStream.Lock(),但由于某种原因,这些都无法阻止应用程序的单独实例打开它。

编辑:相关代码

0 投票
1 回答
57 浏览

php - 不应允许从 php 读取由 Mysql 打开用于写入的文件

我有一个要求,我使用将常规数据从 Mysql 写入输出文件夹

从表中选择 * 到 outfile 'filename' ...

我有一个用 php 编写的 cronjob,它读取这些文件并上传到备份。

我担心它可能不会尝试读取仍在由 MySql 写入的文件。

我的问题是:
1)首先有可能吗?
2)在这种情况下我们可以使用一些锁定机制吗?如果可以,是哪一种。
我正在解决使用flock 由另一个文件写入数据的问题。

谢谢

0 投票
3 回答
11139 浏览

java - 在单个 JVM 和多个 JVM 中使用 java 文件锁

我想我错过了一些东西,但我无法理解文件锁在 Java 中是如何工作的。更准确地说 - 它是如何实施的。

似乎我无法为单个 JVM 中的同一文件获取(甚至无法尝试获取)两个或更多锁。第一个锁将成功获取,所有进一步尝试获取更多锁将导致 OverlapingFileLockException。然而,它适用于单独的进程。

我想实现由文件系统支持的数据存储,该文件系统旨在处理多个并发请求(读取和写入)。我想使用文件锁来锁定存储中的特定文件。

看来我必须在 JVM 级别上再引入一个同步(独占),然后才在文件上同步以避免此异常。

有没有人做过这样的事?

我准备了简单的测试用例来说明我的问题是什么。我使用 Mac OS X、Java 6。

0 投票
3 回答
207 浏览

.net - Which debugging tool (if any) allows me to identify the thread that is holding a lock on a file?

I'm debugging a test that periodically raises an IOException, noting that a file can not be deleted because it is being used by another process. I suspect that the process is indeed my test harness, and that some other thread in the process hasn't disposed of its file resources when I expected it to.

Is there a tool that I can use to determine which thread holds the impeding lock? If I can identify the thread, then I can inspect its call stack and at least try to determine why the resource is not yet disposed. The SOS debugging tool looks promising, but I don't see any feature that would remove a fair amount of guesswork from my investigation.

One thought is to identify the native OS thread-ID, which then can be mapped to a managed thread ID via SOS. How would I accomplish the former?