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

0 投票
1 回答
105 浏览

c# - Opening a file that's in use by another process

I've looked at several solutions to reading a file that's already in use by another process, but none of them seem to work for me.

The file I'm trying to read is an XML file that contains configuration settings that I need to extract.

Here's what I have tried:

This seems to work for just about everyone else, I don't know what I'm doing wrong! Is my file locked in a different manner and cannot be accessed even to read?

Help much appreciated!

Dave

0 投票
3 回答
4487 浏览

c# - 使用 MemoryStream 加载 .jpg 而不会按进程阻止文件?

我有一种编辑器,它在 ui 中显示了一些字符串和一张图片,并且我将数据保存在一个文本文件和一个具有相同名称的分离的 .jpg 文件中。

现在,当我试图通过 覆盖 .jpg 文件时File.Replace,它说图片被另一个进程阻止了,这显然是我自己的应用程序的进程。

我希望内存流可以解决这个问题,因为它是在 RAM 中处理的。所以我想通过内存流加载所有 jpg 文件,但我不明白如何用内存流加载任何东西,如果这完全可以解决我的问题..

编辑:基本上这个代码片段就是这个:

我将图片作为位图图像存储在一个简单的列表中:new BitmapImage(new Uri(f.FullName.ToString().Remove(f.FullName.Length - 4, 4) + ".jpg",UriKind.RelativeOrAbsolute))

我希望这有助于更好地理解问题

编辑 2:现在我正在执行以下操作以加载图片:

但它一直告诉我,我试图覆盖的 Pictrue 已被另一个进程使用。

编辑 3:我尝试使用 pennie Pet 的解决方案并最终得到了这个,锁定文件也有同样的问题:

请参阅 PenniePet 帖子中的 GetImageFromByteArray 方法。

最后编辑:

这完全是我的错,这真的让我很尴尬,我忘记了我正在加载图像。由于我修复了它,锁定问题不再存在。

我选择 PenniePete 的 Awnser 是正确的,因为我目前正在使用它,因为它是我尝试的最后一个,而且他也让我看到了我的失败。

我希望你们其他人不会生气。感谢您所有的帮助!

0 投票
0 回答
171 浏览

android - Android检测到其他进程写入文件

我的 Android 应用程序使用用户通过 Web 浏览器下载的文件。

(是的,我知道 Android 应用程序可以通过多种方式自行下载文件,而无需将用户发送到 Web 浏览器。我无法在此应用程序中执行此操作,因为该文件托管在 Microsoft 的 OneDrive 云存储上。而且,是的,我知道有一个 OneDrive API 可以做到这一点,但我的理解是用户需要知道我的 OneDrive 密码,然后 API 才能下载文件。)

我想阻止我的应用程序在浏览器仍在下载文件时尝试打开文件。

我尝试使用 FileChannel.tryLock() 对文件进行写锁定,但这即使在浏览器仍在下载文件时也会授予锁定。(显然锁定是自愿的。)

还有其他想法吗?谢谢。

0 投票
1 回答
1441 浏览

c# - 以编程方式复制正在使用的文件

在我的 C# 代码中,我希望能够使用一些影子复制机制来复制另一个进程正在使用的文件。

我已经看到解决方案存在于网络、企业或命令行工具中。但它可以以编程方式完成以模仿简单的文件副本吗?

0 投票
2 回答
787 浏览

java - 检查项目是否已被 Visual Studio 打开

我需要从 java 应用程序打开一个 Visual Studio 解决方案,并且我想在打开它之前确保这个 VS 项目尚未打开。

我想到了2个解决方案:

一,检查VS .sln文件是否被另一个进程锁定(请参阅此问题的答案)。这个解决方案的问题是我不知道谁在锁定文件,它可以是任何其他应用程序,如记事本、文件资源管理器(复制时)等。

二,找到正在运行的 VS 进程,并检查这个特定的解决方案是否作为参数发送给其中一个(意思是 VS 开放)。这是代码:

问题是该wmic命令的输出格式为:<devenv.exe path> <VS project path>并且这个VS项目路径可以是相对的,指的是项目文件而不是解决方案文件等。例如,如果我需要打开项目C:\Users\username\My Documents\Visual Studio 2012\Projects\ProjectName\ProjectName.sln和我从中得到的命令行wmic 是"<devenv.exe path>" "C:\Users\username\Documents\Visual Studio 2012\Projects\ProjectName\ProjectName.vcxproj",两条路径都引用同一个VS项目,但我不知道。

编辑: 我刚刚发现 Visual Studio 在打开解决方案文件时不会锁定它,所以我的第一个解决方案不适用。正如您在下面的评论中看到的那样,第二个不是选项,因为在 VS 中打开或关闭的项目将无法正确显示。所以我需要一种不同的方式。

任何想法?

0 投票
1 回答
210 浏览

c# - 无法保存文件,因为它正在使用中

我已经尝试了很多不同的方法来做到这一点,当我在再次保存之前尝试将其删除时,它仍然告诉我该文件正在使用中。

如您所见,我将所有内容都放在“使用”块中。我还“关闭”了该文件,甚至还尝试显式调用“处置”。但是当我再次运行代码时,它仍然告诉我文件正在使用中。我该怎么做才能覆盖文件?

我也试过这样:

它仍然给我同样的错误。

0 投票
2 回答
923 浏览

c - 尝试删除文件时出现权限被拒绝错误

首先大家好,

我的问题是,我的程序创建了一个文件,该文件由另一个程序读取,之后我的程序应该删除该文件。

我使用下面的代码来检查文件是否存在以及是否有其他程序使用该文件。之后我想删除文件:

有谁知道问题可能出在哪里。有趣的是,这适用于其他文件。并且foo.txt也是由这个程序创建的,没有特殊的访问权限。

谢谢 :)

0 投票
0 回答
164 浏览

c# - 删除文件会引发文件正在使用异常

我有一个文件上传控件,允许用户上传图像文件。我没有强迫他们使用特定尺寸的图像,而是尝试调整它的大小,将调整后的版本保存到文件夹中,然后删除原始图像。

当我尝试删除文件时,我不断收到“文件正在使用”异常。我搜索并尝试了所有建议均无济于事。

这是最新的尝试,此时我决定寻求帮助。我传递了源路径(原始文件所在的位置、调整大小的文件最终所在的目标路径、应该调整大小的文件名和宽度,保持纵横比):

更新 这是 AJAX AsynFileUpload 的上传完成事件处理程序。它将文件保存到“调整大小”文件夹。如果图像需要调整大小,它会调用该方法来调整它的大小,然后将其移动到最终的静止位置。如果没有,则不调整大小,它只是移动文件。然后它“尝试”删除 resize 文件夹中的文件,它会窒息!

0 投票
0 回答
142 浏览

windows-10 - 当文件实际上未使用时如何解决“文件正在使用”Windows 10错误

我在带有最新更新的 Windows 10 Home 上使用 Visual Studio 2017 开发软件。当我的应用程序抛出异常时,根据 Windows 的可执行文件会自行保持打开状态。当我(或 Visual Studio)尝试删除(用新建的可执行文件覆盖它)时,Windows 说 test.exe 由 test.exe 打开,即使 test.exe 没有运行并且没有其他进程具有test.exe 的句柄(通过运行 Sysinternals handle.exe 工具验证)。处理此问题的唯一方法是重新启动 Windows 或注销并重新登录。

test.exe 使用 test.dll。如果异常发生在 test.dll 代码中,则 test.dll 将保持锁定直到重新启动。

我以前使用相同操作系统的旧笔记本电脑上没有这个问题,而我的 Windows 10 Pro 工作笔记本电脑上也没有这个问题。

.net 应用程序是一个用 c# 编写的控制台。代码的内容无关紧要,只要一行就可以产生任何异常。如果我从资源管理器运行二进制文件,我不会遇到这个问题,只有当我从命令行运行它时。如果我在点击“调试”或“关闭”按钮之前在 sysinternals 进程资源管理器中杀死了我的 test.exe 进程的主线程 test.exe,那么我可以毫无问题地删除该文件。

它看起来像一个 Windows 错误,但为什么我的旧笔记本电脑和工作笔记本电脑中没有它?

我想知道是否有其他人遇到过同样的问题?或者如果有人知道如何解决它甚至更好。

非常感谢!

0 投票
1 回答
884 浏览

windows - Windows VirtualBox 上的“文件正在使用”错误

在 Windows Virtualbox 上使用 Vagrant 时,每当我尝试从主机操作系统上的共享文件夹中删除资产或更改其文件名时,都会收到错误“文件正在使用”。这发生在我通过 Nginx 加载文件/资产之后。

视窗错误

File In Use 无法完成该操作,因为该文件已在 VBoxHeadless 中打开 关闭该文件并重试。

在来宾操作系统中移动/删除文件也会失败: