相关疑难解决方法(0)

搜索目录中的所有文件时显示进度

我之前问过快速获取特定路径中的所有文件和目录的问题,以便尽可能地找到文件.我正在使用该解决方案,以便找到与正则表达式匹配的文件名.

我希望显示一个进度条,因为有一些非常大而慢的硬盘驱动器,它仍然需要大约1分钟才能执行.我在另一个链接上发布的解决方案无法让我知道为了让我显示进度条,还有多少文件丢失.

我正在考虑做的一个解决方案是尝试获取我正在计划遍历的目录的大小.例如,当我右键单击该文件夹时,C:\Users我可以估计该目录的大小.如果我能够知道大小,那么我将能够通过添加我找到的每个文件的大小来显示进度.换句话说,progress =(文件大小的当前总和)/目录大小

由于某种原因,我无法有效地获得该目录的大小.

有关堆栈溢出的一些问题使用以下方法:

在此输入图像描述

但请注意,我得到一个例外,无法枚举文件.我很高兴在我的驱动器上尝试这种方法.

在那张照片上,我试图计算文件数量以显示进度.我可能无法使用该方法有效地获取文件数量.当人们问起how to get the number of files on a directory并且人们问起时,我只是尝试堆栈溢出的一些答案how the get the size f a directory.

c# filesystems directoryinfo

6
推荐指数
1
解决办法
5201
查看次数

有没有办法从Directory.EnumerateFiles中的异常中恢复?

在.NET 4中,这个带有递归的Directory.EnumerateFiles()方法看起来很方便.
但是,如果在递归中发生异常,我如何继续/从中恢复并继续枚举其余文件?

try
{
  var files = from file in Directory.EnumerateFiles("c:\\",
                           "*.*", SearchOption.AllDirectories)
              select new
              {
                File = file
              };

  Console.WriteLine(files.Count().ToString());

}
catch (UnauthorizedAccessException uEx)
{
  Console.WriteLine(uEx.Message);
}
catch (PathTooLongException ptlEx)
{
  Console.WriteLine(ptlEx.Message);
}
Run Code Online (Sandbox Code Playgroud)

.net linq exception enumerate

5
推荐指数
1
解决办法
2620
查看次数

多线程文件搜索C#

我需要一些帮助.现在我已经完成了一个文件搜索,它将搜索我的整个硬盘驱动器并且可以正常工作.以下是执行此操作的两种方法.

public void SearchFileRecursiveNonMultithreaded()
    {
        //Search files multiple drive

        string[] drives = Environment.GetLogicalDrives();

        foreach (string drive in drives)
        {
            if (GetDriveType(drive).ToString().CompareTo("DRIVE_FIXED") == 0)
            {
                DriveInfo driveInfo = new DriveInfo(drive);

                if (driveInfo.IsReady)
                {
                    System.IO.DirectoryInfo rootDirectory = driveInfo.RootDirectory;
                    RecursiveFileSearch(rootDirectory);
                }
            }
        }
        MessageBox.Show(files.Count.ToString());
    }

    public void RecursiveFileSearch(DirectoryInfo root)
    {
        DirectoryInfo[] subDirectory;
        try
        {
        //private List<FileInfo> files = new List<FileInfo>() is declared above
            files.AddRange(root.GetFiles(searchString.Text, SearchOption.TopDirectoryOnly));
        }
        catch (Exception)
        {
        }

        try
        {
            // Now find all the subdirectories under this directory.
            subDirectory = …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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

确定是否存在以某个字符串开头的子文件夹

我想知道某个文件夹是否包含以特定名称开头的子文件夹.

对于Eg.

在我的C:\ Test文件夹中,我有GUI,TCP,PLC,PLC_1,PLC_2 ...... PLC_n等文件夹.

我可能有也可能没有PLC_文件夹.我想检查这些文件夹是否存在.如果它们存在,我想提取所有这些文件夹的名称.

c#

0
推荐指数
1
解决办法
696
查看次数