相关疑难解决方法(0)

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

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

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

.net c# file-io file file-locking

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

如何检查文件锁?

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

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

.net c# io filelock

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

检测文件是否被另一个进程锁定(或实际上是同一进程)

这就是我现在这样做的方式.我尝试在FileShare设置为none的情况下打开该文件.所以我想要独占访问该文件.如果我不能得到那么它是一个很好的赌注别人有文件被锁定.

必须有一个更好,更快的方式.有任何想法吗?

            try
            {
                using (FileStream fs = File.Open(GetLockFilename(), FileMode.Open, FileAccess.ReadWrite, FileShare.None))
                {
                    fs.Close();
                }
                // The file is not locked
            }
            catch (Exception)
            {
                // The file is locked
            }
Run Code Online (Sandbox Code Playgroud)

.net c#

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

我可以简单地"读取"正在使用的文件吗?

我试图使用StreamReader读取文件,但它总是被另一个进程使用,所以我收到此错误:

该进程无法访问文件'\ arfjwknasgmed17\C $\FLAG CONDITION\CP-ARFJN-FLAG.XLS',因为它正由另一个进程使用.

有没有办法可以在不复制的情况下阅读本文?或者这是我唯一的选择?

c# filesystems file-io file-permissions file

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

创建完成后监视文件夹并复制新文件

我构建了一个控制台应用程序,用于监视 Windows 2019 Server 上的一组文件夹,并使用相同的文件名将任何新创建的 .txt 文件复制到另一个文件夹。到目前为止,它可以实现基本功能。现在我必须处理这样一个事实:大多数时候,这些文件很大,需要几分钟才能完成创建。我已经浏览了几篇 SO 帖子,并拼凑了以下代码来尝试完成此任务:

using System;
using System.IO;

namespace Folderwatch
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourcePath = @"C:\Users\me\Documents\SomeFolder";

            FileSystemWatcher watcher = new FileSystemWatcher(sourcePath);

            watcher.EnableRaisingEvents = true;
            watcher.IncludeSubdirectories = true;
            watcher.Filter = "*.txt";

            // Add event handlers.
            watcher.Created += new FileSystemEventHandler(OnCreated);
        }

        // Define the event handlers. 

        private static void OnCreated(object source, FileSystemEventArgs e)
        {
            // Specify what is done when a file is created.
            FileInfo file = new FileInfo(e.FullPath);
            string …
Run Code Online (Sandbox Code Playgroud)

c# filesystemwatcher

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