问题标签 [file-in-use]
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# - 关闭 StreamWriter 后解析正在使用的异常文件
我收到错误消息:
我的程序刷新、关闭和处理日志文件。我的程序稍后会尝试打开文件以附加更多数据。第二次打开导致上述异常。
Process Explorer
不显示文件句柄,在执行期间直接访问二进制文件或使用 MS Visual C# Express 2008 在调试模式下运行。
其他进程不应使用此文件,因为它是我的应用程序创建的原始文件。
Stack Overflow 中的一些解决方案建议实现using
语句,但这不可行,因为数据的写入不会发生在简单或简短的复合语句中。记录类使用写入器委托将数据写入文件。
根据 Stack Overflow 中的其他解决方案,在for
循环中,文件可能不会在下一次打开文件的迭代之前关闭。在再次打开文件之前,我已经等待了 10 多秒,但无济于事(同样的例外)。
这是代码示例:
由于我有一个截止日期,我正在寻找这个问题的解决方案。我的一些想法是:
- 保持文件打开;在测试运行期间不要打开和关闭。
- 在轮询文件时向用户显示“等待文件”消息(查看何时可以再次打开)
- 编写非托管 C 或 C++ 库来处理文件 I/O(因为非托管 C 和 C++ 不使用 .NET 框架)。
- 学习如何告诉 .NET 框架快点关闭文件。
我在 Windows 7 64 位架构上使用 MS Visual C# 2008 Express。
registry - 检测 Windows 自动更新
我有替换核心操作系统文件的软件。问题是 Microsoft 更新替换了这些文件,导致程序无法运行。由于自动更新,如何在启动时检测文件替换?
我的想法是在某个键上监视注册表,什么键?还有其他想法吗?
delphi - Delphi 等待文件复制过程完成
我有一个线程用于ReadDirectoryChangesW
在文件夹中添加或删除文件时通知我。
对于每个新图像,我打开文件并创建图像的缩略图。但是,我似乎在文件完全复制到目标文件夹之前收到了通知,在这种情况下,我只会得到部分缩略图。(文件从远程位置复制到中央服务器,网络在高峰时间会变慢。)
我确实检查了文件是否正在使用中,但这似乎不适用于图像文件。
我的问题是:有没有办法检测文件何时被完全复制,还是我只是等到文件大小或上次修改时间自上次检查以来没有改变?
c# - 重命名正在运行的可执行 (exe) 文件
我们正在尝试一次将更新推送到多台服务器,我的经理发现可以重命名正在运行的 .exe 文件。使用该知识,他想重命名正在运行的 exe 并复制所述 exe 的新版本,这样任何运行 foo.exe 内存副本的人都可以,并且任何打开指向 foo.exe 的快捷方式的人都将获得一个新副本应用了更新。
我想我需要澄清一下,他并不指望旧副本会神奇地更新,他只是希望他们继续运行旧副本,直到他们再次打开 exe,在这种情况下,它将打开具有名称的新副本旧的。
它有时会抛出该文件正在他的程序中使用的异常,但如果他尝试在循环中重命名它,它最终会成功。在我的机器上,即使在循环中,我也无法让它工作。
我的第一个也是主要的问题是:这样做是否可以接受。重命名正在运行的可执行文件是否应该是一个有效的场景?
其次,如果这是一个有效的场景,那么如何可靠地做到这一点?我们目前的想法是尝试多次使用 File.Move (C#) 进行重命名,如果它不起作用,则将其写入错误日志以便手动处理。
php - 使用 php 检查文件是否有更改
有没有办法检查一个文件是否被另一个进程从 php 脚本访问或修改。我曾尝试使用 filemtime()、fileatime() 和 filectime() 函数,但我有一个循环中的脚本,它正在不断检查,但似乎一旦脚本被执行,它只会从第一次开始文件已检查.. 一个示例是将文件上传到 FTP 或 SMB 共享,我在下面尝试了此操作
我知道文件在不断变化,但 $LastMod 变量没有更新,但结束进程并再次执行将从文件中获取新的 $LastMod 但每次在循环中检查文件时 dosnt 似乎都会更新
我也尝试过查看 filesize() 但得到相同的症状我也查看了 flock() 但由于文件是在 PHP 之外创建或修改的,所以我看不出这是如何工作的。
如果有人有任何解决方案请告诉我
感谢 Vip32
PS。使用 PHP 处理文件需要与 mysql 交互和查询外部网站
c# - 如何修复“文件正在被另一个进程使用”错误
我创建了一个程序,该程序能够通过 datagridview 修改 .exe.config 文件(应用程序配置)的内容,并在 datagridview 上显示键值对。问题是,我有一个保存设置,它将旧值替换为用户键入的新值。它保存了,下次我打开它时,文件将被覆盖,但是当我尝试加载配置文件以更新用户设置已更改的内容时,出现“文件被另一个进程使用”错误。
这是代码:
错误发生在 SaveAppSettings 下的 loadconfigfile 函数中。它告诉我它无法访问该文件,因为该文件已被另一个进程使用。在我可以再次打开文件并将其显示给用户之前,我需要做些什么吗?
非常感谢,
频率
objective-c - 检测其他进程正在使用的文件
在 Windows 等上,我曾经使用一种技巧来找出当前正在使用的文件(专门编写的)。
我用来打开文件进行写入,如果它失败了,很可能另一个进程正忙于访问它。
遗憾的是,这些技巧(使用带有排他锁的 C OPEN 进行写入)在我的 Mac 上不起作用。虽然我在终端中的 curl 仍在编写我的 -fileBusy() 检查失败。
使用 F_GETLK 对 fd 调用 fcnt 也不会显示任何锁定。
我是否有机会检测文件是否正在被另一个进程使用?
Ps> 无法侦听 fsevents,因为我的应用程序是在其他应用程序/进程创建之后启动的。
c# - 该进程无法访问该文件,因为它正在被另一个进程在删除时使用
我以为我通过关闭和处置我的阅读器解决了这个问题,但在某些情况下,该文件仍在使用中。接下来我调用了垃圾收集器,因此文件将被释放。这解决了 99% 的所有会导致此错误的问题。使用的代码:
在处理文件内容的大进程之后调用完成。
当我处理只有 1 行(或很少)行的文件时,有时会出现此错误。看来windows太快了,而且DeleteFile();
失败了。我很难重现这个错误,但有时它会连续发生两次。
当我处理需要超过 2 秒的文件时,这种情况永远不会发生。
我不能使用 using ,因为文件可以是 GB 的,而且当它的内存太满时,Windows 不喜欢它。此外,这种方式的过程执行得更好。
问题:
我还能做些什么来防止这个错误吗?
PS:请随时询问更多信息。
编辑:
删除文件的代码
创建文件的代码
创建阅读器的代码
我使用一个抽象类来确定应该如何读取输入。使用以下语句,我将遍历文件的内容。
NextRow() 方法看起来像这样
在 while 循环关闭后,我调用完成过程。FileReader.Finish();
file - 文件仍在使用中 错误 32 如何释放它?
我正在通过以下代码上传文件。
成功上传后,我尝试删除文件,但收到 32 - File in use 错误。
谁能告诉我如何解决这个文件使用中的错误?以下代码正在上传文件,但完成后不释放它..
app-store - 从通配符应用 ID 升级到显式应用 ID 以允许推送通知
我有一个拥有大约 300,000 名成员的应用程序,我想向它添加推送通知。不幸的是,我最初使用通配符捆绑 ID 创建了该应用程序,com.MyCompany.*
当我将它上传到 Apple 并在我的plist
文件中编辑它时,我让它说com.MyCompany.MyAppName
现在我想添加推送通知,我必须创建一个唯一的(或 EXPLICIT)应用程序 ID,所以我尝试创建一个名为com.MyCompany.MyAppName
...我收到此错误消息:The bundle identifier you have specified is already in use. Please select another.
我查看了我的应用程序 ID,我所拥有的只是com.MyCompany.*
. 所以这不是我可以删除的任何东西。该消息必须指的是我的应用程序的实时版本,该应用程序已经使用通配符应用程序 ID...
如何将通配符应用 ID 转换为显式应用 ID,以便向成员发送推送通知?
我现在已经在网上搜索了大约 2 个小时,每个人似乎都说您所要做的就是创建一个新的应用 ID,该 ID 与您当前的应用版本具有相同的捆绑 ID...所以我猜此错误消息The bundle identifier you have specified is already in use. Please select another.
是直到最近才存在的新错误消息,因为似乎没有其他人遇到过此问题...
任何帮助是极大的赞赏!