标签: file-locking

有没有办法检查文件是否正在使用?

我正在用C#编写一个需要重复访问1个图像文件的程序.大部分时间它都可以工作,但如果我的计算机运行速度很快,它会在将文件保存回文件系统之前尝试访问该文件并抛出错误:"另一个进程正在使用的文件".

我想找到解决这个问题的方法,但是我所有的谷歌搜索都只是通过使用异常处理来创建检查.这违背了我的宗教信仰,所以我想知道是否有人有更好的方法呢?

.net c# file-io file file-locking

809
推荐指数
11
解决办法
49万
查看次数

如何找出使用.NET锁定文件的进程?

我已经看到了几个关于使用HandleProcess Monitor的答案,但我希望能够在我自己的代码(C#)中找到哪个进程正在锁定文件.

我有一种令人讨厌的感觉,我将不得不在win32 API中徘徊,但如果有人已经这样做并且可以让我走上正轨,我真的很感激帮助.

更新

类似问题的链接

c# file-locking

148
推荐指数
5
解决办法
13万
查看次数

用Python锁定文件

我需要锁定一个文件以便用Python编写.它将同时从多个Python进程访问.我在网上找到了一些解决方案,但大多数都失败了,因为它们通常只基于Unix或基于Windows.

python file-locking

133
推荐指数
9
解决办法
14万
查看次数

记事本打败了他们?

在Windows Server 2012 R2系统上,Kotlin程序用于FileChannel.tryLock()保存文件的独占锁定,如下所示:

val fileRw = RandomAccessFile(file, "rw")
fileRw.channel.tryLock()
Run Code Online (Sandbox Code Playgroud)

有了这个锁,我无法打开文件:

  • 写字板
  • 记事本+ +
  • 以编程方式使用C#,对于任何值FileShare:

    using (var fileStream = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (var textReader = new StreamReader(fileStream))
    {
        textReader.ReadToEnd();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 从命令行,type命令:

    C:\some-directory>type file.txt
    The process cannot access the file because another process has locked a portion of the file.
    
    Run Code Online (Sandbox Code Playgroud)
  • Internet Explorer(是的,我很绝望)

可以用记事本打开它.

记者怎么能打开一个锁定的文件,没有别的可以吗?

windows notepad locking file-locking file-access

131
推荐指数
1
解决办法
3万
查看次数

取消部署Tomcat Web应用程序时如何防止文件锁定?

我在tomcat 7中使用管理器应用程序,我无法完全取消部署应用程序.

它说 FAIL - Unable to delete [F:\apache-tomcat-7.0.33\webapps\balaji]. The continued presence of this file may cause problems.

我读到它的某处是因为一些称为内存泄漏的现象,如果我们修复它,问题就会得到解决.

任何人都可以告诉我tomcat 7中的内存泄漏是什么,我们如何解决?我正在使用Windows 7操作系统.如果我能够解决它,我的非部署和重新部署过程将顺利进行吗?

tomcat memory-leaks file-locking tomcat7 undeploy

65
推荐指数
2
解决办法
5万
查看次数

如何删除C#中另一个进程锁定的文件?

我正在寻找一种方法来删除使用C#被另一个进程锁定的文件.我怀疑该方法必须能够找到哪个进程正在锁定文件(可能是通过跟踪句柄,虽然我不知道如何在C#中执行此操作)然后在能够使用完成文件删除之前关闭该进程File.Delete().

c# file-locking

54
推荐指数
4
解决办法
5万
查看次数

读取另一个进程使用的文件

我正在监视由服务器程序写入的文本文件.每次更改文件时,内容都将输出到我的程序中的窗口.

问题是我无法使用Streamreader文件used by another process.建立一个FilestreamReadWrite将没有任何好处,因为我无法控制所使用的文件的过程.

我可以在记事本中打开文件.即使服务器正在使用它,也必须能够访问它.

这有什么好办法吗?

我应该做以下事情吗?

  1. 监控文件
  2. 更改时制作临时副本
  3. 阅读临时副本
  4. 删除临时副本.

每当服务器更改文件时,我都需要在文件中获取文本.

c# file-io file-locking

45
推荐指数
2
解决办法
5万
查看次数

在Java(TM)Platform SE二进制文件中打开

我试图删除一个文件,我有两个,一个稍微改变,所以我可以删除旧文件,并用我更改的新文件替换它.当我尝试删除该文件时,我收到错误消息"正在使用的文件",其中表示该操作无法完成,因为该文件是在Java(TM)Platform SE二进制文件中打开的.

我怎么关闭它?

java file-io file file-locking filehandle

34
推荐指数
3
解决办法
8万
查看次数

26
推荐指数
3
解决办法
1万
查看次数

用于读写的Java FileLock

我有一个进程,它会被cron相当频繁地调用,以读取其中包含某些与移动相关的命令的文件.我的进程需要读取和写入此数据文件 - 并将其锁定以防止其他进程在此期间触摸它.用户可以执行完全独立的过程(可能)写入/附加到该相同的数据文件.我希望这两个进程运行良好,并且一次只访问一个文件.

nio FileLock似乎是我需要的(没有编写我自己的信号量类型文件),但是我无法将其锁定以供阅读.我可以锁定并写入正常,但在读取时尝试创建锁定时会出现NonWritableChannelException.甚至可以锁定文件进行阅读吗?看起来像RandomAccessFile更接近我的需要,但我不知道如何实现它.

这是失败的代码:

FileInputStream fin = new FileInputStream(f);
FileLock fl = fin.getChannel().tryLock();
if(fl != null) 
{
  System.out.println("Locked File");
  BufferedReader in = new BufferedReader(new InputStreamReader(fin));
  System.out.println(in.readLine());
          ...
Run Code Online (Sandbox Code Playgroud)

FileLock行抛出异常.

java.nio.channels.NonWritableChannelException
 at sun.nio.ch.FileChannelImpl.tryLock(Unknown Source)
 at java.nio.channels.FileChannel.tryLock(Unknown Source)
 at Mover.run(Mover.java:74)
 at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

它说,看看JavaDocs

尝试写入最初未打开以进行写入的通道时,抛出未经检查的异常.

但我不一定要写信给它.当我尝试创建FileOutpuStream等用于写入目的时,我很高兴,直到我尝试在同一文件上打开FileInputStream.

java file-locking filelock

22
推荐指数
2
解决办法
3万
查看次数