标签: filelock

如何检查文件锁?

有没有办法检查文件是否被锁定而不使用try/catch块?

现在,我所知道的唯一方法就是打开文件并抓住任何文件System.IO.IOException.

.net c# io filelock

246
推荐指数
10
解决办法
18万
查看次数

如何从Team Foundation Server中的其他人解锁文件

我们有一个项目存储在我们的TFS服务器中,一些文件由我从另一台计算机和另一个用户(两个都不再使用)签出.有没有办法强制解锁文件(没有对它进行任何更改,所以如果我只能这样做,这样做是安全的).

tfs filelock

72
推荐指数
8
解决办法
13万
查看次数

用于检查锁定文件的应用程序的PowerShell脚本?

在PowerShell中使用,如何检查应用程序是否锁定文件?

我想检查哪个进程/应用程序正在使用该文件,以便我可以关闭它.

powershell scripting filelock

44
推荐指数
5
解决办法
8万
查看次数

用于读写的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万
查看次数

我可以阻止StreamReader在使用时锁定文本文件吗?

StreamReader在读取文本文件时会锁定它.
我可以强制StreamReader以"只读"或"非锁定"模式工作吗?

我的解决方法是将文件复制到临时位置并从那里读取,但我更愿意直接使用StreamReader.任何替代建议?

背景:
我写了一个小应用程序来从日志文件中获取一些统计信息.该文件不断被外部程序更新(每秒几次),可以调用AAXXYY.

查看输出表明我的应用程序可能正在锁定文件并阻止AAXXYY写入.

这就是我正在做的事情

    private void btnGetStats_Click(object sender, EventArgs e)
    {
        int countStarts = 0;
        int countEnds = 0;

        IList<string> sessions = new List<string>();

        using(StreamReader stRead = new StreamReader(openFileDialog1.FileName,Encoding.Unicode))
        {
            while(!stRead.EndOfStream)
            {
                string line = stRead.ReadLine();
                if(line.Contains("Session start"))
                {
                    countStarts++;
                    sessions.Add(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
                }
                if (line.Contains("Session end"))
                {
                    countEnds++;
                    sessions.Remove(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
                }
            }
        }

        txtStarts.Text = countStarts.ToString();
        txtEnds.Text = countEnds.ToString();
        txtDifference.Text = (countStarts - countEnds).ToString();

        listBox1.DataSource = sessions;
    }
Run Code Online (Sandbox Code Playgroud)

.net c# concurrency logging filelock

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

如何模拟"锁定"文件(具有写锁定的文件)

我正在尝试调试用户偶尔会锁定他们尝试打开的文件的问题.代码似乎具有正确的异常处理,但用户仍在报告查看错误消息.如何模拟锁定的文件以便我自己调试?

编辑:对于Windows.

windows simulate filelock

17
推荐指数
2
解决办法
6947
查看次数

Linux flock,如何"只是"锁定文件?

在Bash中,我试图使函数getLock与不同的锁名称一起使用.

function getLock
{
    getLock_FILE="${1}"
    getLock_OP="${2}"
    case "${getLock_OP}" in
        "LOCK_UN")
            flock -u "${getLock_FILE}"
            rm -fr "${getLock_FILE}"
            ;;
        "LOCK_EX")
            flock -x "${getLock_FILE}"
    esac
}
Run Code Online (Sandbox Code Playgroud)

但是弗洛克说 flock: bad number: myfilelock

我怎样才能锁定文件,并在需要时释放它,而不必在flock中执行命令?

它是这样使用的:

getLock myfilelock LOCK_EX
somecommands
........
getLock myfilelock LOCK_UN
Run Code Online (Sandbox Code Playgroud)

linux file-locking flock filelock

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

FileStream包含锁定文件

我想知道是否可以将readonly FileStream转换为锁定文件?我现在尝试读取锁定文件时出现异常.

using (FileStream stream = new FileStream("path", FileMode.Open))
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# filestream filelock c#-4.0

15
推荐指数
2
解决办法
1万
查看次数

14
推荐指数
3
解决办法
5万
查看次数

使用Java的FileLock时,是否可以让close()自动执行lock.release()?

大多数人应该知道close()也关闭任何流使用.

这允许以下代码:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
...
br.close();
Run Code Online (Sandbox Code Playgroud)

这很好,因为我们不需要引用FileInputStream并记得关闭它.

但是它也适用于FileLocks吗?

final FileInputStream fis = new FileInputStream(new File("buffer.txt"));
final FileChannel c = fis.getChannel();
final FileLock lock = c.lock(0L, Long.MAX_VALUE, true);
final BufferedReader br = new BufferedReader(new InputStreamReader(fis));

try {
    while(br.ready()) {
        System.out.println(br.readLine());
    }
} finally {
    br.close();
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这段代码并且在br.close()调用时正确释放了锁,但这样做是否安全?该可关闭的JavaDoc说,"关闭此流并释放与之关联的所有系统资源." 我可以安全地假设我正在使用锁定close()指定release()的吗?

java nio filelock

12
推荐指数
1
解决办法
3572
查看次数