当前位置: 首页 > 知识库问答 >
问题:

Directory.EnumerateFiles是否正在锁定它试图复制的文件?

金泉
2023-03-14

下面的代码

namespace BackupCopy
{
    class Program
    {
        static void Main(string[] args)
        {
            // Set Source Path
            string sourcePath = @"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup";

            // Verify Source Path Exists
            if (!Directory.Exists(sourcePath))
            {
                Console.WriteLine("Source path does not exist.");
                Console.ReadLine();
                return;
            }



            // Backup each file in Array
            foreach (string filename in Directory.EnumerateFiles(sourcePath))
            {
                Backup(filename);
            }

        }

        public static void Backup(string filename)
        {
            // Pull filename from method input parameter
            string fileName = filename;

            // Set Paths
            string sourcePath = @"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup";
            string targetPath = @"\\prometheus\NAS\DB Backups\mercurys";

            // Verify Target Path Exists
            if (!Directory.Exists(targetPath))
            {
                Console.WriteLine("Target path does not exist.");
                Console.ReadLine();
                return;
            }

            // Use Path class to manipulate file and directory paths. 
            string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
            string destFile = System.IO.Path.Combine(targetPath, fileName);

            // To copy a file to another location and  
            // overwrite the destination file if it already exists.
            try
            {
                System.IO.File.Copy(sourceFile, destFile, true);
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc);
                Console.ReadLine();
                return;
            }
        }
    }
}

共有1个答案

解宏扬
2023-03-14

问题是程序在枚举目录中的文件时锁定了文件句柄。

取代这个;

        // Backup each file in Array
        foreach (string filename in Directory.EnumerateFiles(sourcePath))
        {
            Backup(filename);
        }

有了这个;

        Backup("AdventureWorks2012.bak");
 类似资料:
  • 问题内容: 我的Java程序想要读取一个文件,该文件可以被另一个写入该文件的程序锁定。我需要检查文件是否已锁定,如果已锁定,请等待它释放。我该如何实现? Java程序在Windows 2000服务器上运行。 问题答案: 在带有Sun JVM的Windows下,尽管JavaDoc保留了相当模糊的可靠性(取决于系统),但FileLocks应该可以正常工作。 但是,如果您只需要在Java程序中识别出 其

  • 您可以在下面的问题中看到:(liquibase-lock-reasons)当Liquibase操作中断时客户端Liquibase锁定,使Liquibase处于锁定状态。 我想知道是否有一种方法可以配置Liquibase,使其从列中的日期和时间自动检测这种情况。我想如果你已经拿着锁一个小时了--你应该把它叫做过期锁。

  • 主要内容:汇编代码中的修改,TSL指令汇编代码中的修改 在锁变量机制中,有时Process读取锁变量的旧值并进入临界区。由于这个原因,多个流程可能会进入临界区。但是,下面第一部分中显示的代码可以用第二部分中显示的代码替换。这不会影响算法,但通过这样做,我们可以设法在一定程度上提供互斥,但不能完全实现。 在更新版本的代码中,Lock的值被加载到本地寄存器R0中,然后锁的值被设置为。 但是,在步骤3中,先前的锁定值(现在存储到R0中)与0

  • 问题内容: 我正在使用某些文件,并且想知道是否存在一种检查文件是否为图像的方法? 问题答案: 这对我来说很好。希望我能帮上忙

  • 存储区及其锁文件已被另一个进程锁定:/home/dev/neo4j-community-2.3.2/data/graph.db/store_lock。请确保没有其他进程正在使用此数据库,并且目录是可写的(即使是只读访问也是必需的) 我知道这是因为neo4j服务器应用程序正在运行,它将目录锁定为另一个应用程序的可写目录。 但是我想同时运行这两个功能,neo4j服务器与browser studio和我

  • 进程无法访问文件'd:\app_data\',因为另一个进程正在使用它。 这是我一直在用的代码