问题标签 [filelock]
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.
windows - 如何模拟“锁定”文件(具有写锁的文件)
我正在尝试调试一个问题,即用户偶尔会锁定他们尝试打开的文件。该代码似乎具有正确的异常处理,但用户仍然报告看到错误消息。我怎样才能模拟一个锁定的文件,以便我可以自己调试呢?
编辑:对于 Windows。
c# - 带有锁定文件的 FileStream
我想知道是否可以将只读 FileStream 获取到锁定文件?现在,当我尝试读取锁定的文件时出现异常。
谢谢!
java - 无法从新锁定的文件中读取
所以我尝试锁定文件来读取它,但是我得到了 IOException,知道为什么吗?
我得到了这个错误IOException: The process cannot access the file because another process has locked a portion of the file
java - 使用 FileChannel 编写任何 InputStream?
我可以将任何 InputStream 写入 FileChannel 吗?
我正在使用 java.nio.channels.FileChannel 打开文件并将其锁定,然后将 InputStream 写入输出文件。InputStream 可能被另一个文件、URL、套接字或任何东西打开。我写了以下代码:
但是, outputChannel.transferFrom(...) 的第一个参数请求一个 ReadableByteChannel 对象。由于我使用 InputStream 作为输入,因此它没有 inputStream.getChannel() 方法来创建所需的通道。
有什么方法可以从 InputStream 中获取 ReadableByteChannel 吗?
c# - C# 访问锁定的文件
我想通过 c# 访问一个文件,该文件是通过不同的程序创建和处理的。
目前我正在通过 Windows 资源管理器将文件复制到不同的位置,然后使用该副本。由于副本很大,我更愿意直接使用原始文件。有什么办法吗?
普通的 FileStream 不允许任何共享访问模式。我可以控制这两个程序,所以如果有必要我也可以更改作者。
visual-studio-2010 - 另一个进程正在使用程序集
我已将运行 3.5 vs2008 的 WCF 项目升级到 .net 4.0 vs2010 并遇到问题。从 vs2010 编译时,我的服务实现项目中的程序集被 devenv.exe 锁定(注意没有调试 - 只编译)。程序集在vs2010重启时释放,每次重启后都可以编译一次。我已经尝试过:
- 插入 PreBuild 事件以解锁程序集
- 删除了程序集版本通配符
- 禁用源步进
- 停止 Windows 搜索
- 停止 IIS
- 退出 vs2010,删除 sln.suo 和 bin/obj 文件夹
- 现在阅读博客和 SO 帖子 3 天 :)
- 从服务项目中删除所有引用并重新添加它们
我几乎没有想法,似乎微软对此没有任何解释,无法修复。任何想法将不胜感激!
错误信息:
无法将文件“.....some path...\Debug\HelperLibrary.Service.dll”复制到“bin\Debug\HelperLibrary.Service.dll”。该进程无法访问文件“bin\Debug\HelperLibrary.Service.dll”,因为它正被另一个进程使用。
额外信息: 使用 msbuild 从提示编译时,没有问题。仅在从 vs2010 编译时。旧的 vs2008 解决方案当然仍然有效。
printing - 需要帮助打开已锁定的打印机假脱机影子文件 (.SHD)
我对位于 Windows 打印假脱机目录“C:\Windows\System32\spool\PRINTERS”内的影子文件 (.shd) 中的一些信息感兴趣。每次启动打印作业时,都会在该目录中创建一个假脱机文件 (.spl) 和一个影子文件 (.shd)。到目前为止,我已经成功检测到打印作业何时开始,并且能够暂停该打印作业。如果您不暂停作业,文件最终会进入打印机,然后被 Windows 删除。
我的问题是。我无法打开 .SHD 文件,因为它们被锁定,当它们被 sprint spooler 打开时您无法读取它们。我什至尝试在 Windows 资源管理器中访问该文件,然后将文件复制到另一个文件,但这也不起作用。我可以打开的 .SPL 假脱机文件。我只是等待,并且后台处理程序很快就会释放该文件。但是,对于影子文件,它会永久保留该文件。不幸的是,它是我需要的。
我专门用来打开文件的代码行如下:
我得到的 IOException 是:
该进程无法访问文件“C:\Windows\system32\spool\PRINTERS\FP00083.SHD”,因为它正被另一个进程使用。
所以是的,它正在被另一个进程使用。它被窗口的打印后台处理程序服务使用。但我认为我对此无能为力。我要做的就是读取文件。我不想对其进行任何更改。有什么我可以在这里做的还是我只是搞砸了?
windows - 在 Windows XP 中的下一个系统启动时间安排文件替换
我在我的计算机上运行 32 位 Windows XP 机器。最近我发现偶尔会弹出一个错误,显示 Dr Watson Postmortem Debugger 已崩溃并需要关闭。此时所有的 gui 都卡住了,我需要手动重启系统才能正常工作。
所以当我检查错误日志时,我发现了以下内容。
然后使用我使用以下命令:
regsvr32 c:\windows\system32\dbghelp.dll
它显示一个对话框说:
c:\windows\system32\dbghelp.dll was loaded,but the DllRegisterServer entry point was not found. This file can not be registered.
所以我认为 dbghelp.dll 文件已损坏并且需要更改,我从互联网上下载了该文件的另一个副本,但由于文件上的各种锁定,操作系统不允许我替换该文件。
我尝试使用以下命令使用计划任务为下一次系统启动计划批处理文件:
copy /Y j:\security_updates\dbghelp.dll c:\windows\system32\
但这似乎也不起作用。如何在下次系统启动时替换此文件?
java - Java FileLock:如何从锁定的文件中加载动态库?
我有一个从后端服务器检索字节数组的小程序。此字节数组包含一个动态库(DLL 或 SO,取决于运行小程序的操作系统),必须将其写入磁盘,然后通过调用 System.load() 从磁盘加载。
我需要确保文件在写入磁盘之后和操作系统通过调用 System.load() 加载之前不会被篡改。我在将文件写入磁盘时获得了文件的独占锁,但我的测试表明我必须在调用 System.load() 之前释放此锁,否则将无法加载库。
有什么方法可以在加载文件时保持对文件的锁定?
示例代码:
任何帮助是极大的赞赏。解决方案(如果有的话)不能是任何操作系统的原生解决方案,但可以在 Java 支持的所有平台上运行。该解决方案与 Java 1.4 兼容也是一个要求。
linux - fcntl 记录锁在多线程中工作?
我用 fcntl 函数测试多进程记录锁,我当前的请求需要在线程之间使用记录锁。我测试了它,但它并没有像想象的那样工作,你对多线程记录锁定有什么建议吗?