Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在特定驱动器c中搜索扩展名为.dcm的文件#_C#_Visual Studio 2008_Search_Directory - Fatal编程技术网

C# 在特定驱动器c中搜索扩展名为.dcm的文件#

C# 在特定驱动器c中搜索扩展名为.dcm的文件#,c#,visual-studio-2008,search,directory,C#,Visual Studio 2008,Search,Directory,我试图通过输入文件名或文件内容来搜索扩展名为.dcm的文件。我可以在目录中搜索,但当我尝试在驱动器中搜索时,会出现一个错误,显示缺少目录或汇编引用 string startFolder = @"C:\"; // Take a snapshot of the file system. System.IO.DriveInfo dir = new System.IO.DriveInfo(startFolder); // This method assumes that the application

我试图通过输入文件名或文件内容来搜索扩展名为.dcm的文件。我可以在目录中搜索,但当我尝试在驱动器中搜索时,会出现一个错误,显示缺少目录或汇编引用

string startFolder = @"C:\";
// Take a snapshot of the file system.
System.IO.DriveInfo dir = new System.IO.DriveInfo(startFolder);

// This method assumes that the application has discovery permissions
// for all folders under the specified path.
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.
                                                               SearchOption.
                                                               AllDirectories);
string startFolder=@“C:\”;
//拍摄文件系统的快照。
System.IO.DriveInfo dir=新的System.IO.DriveInfo(startFolder);
//此方法假定应用程序具有发现权限
//用于指定路径下的所有文件夹。
IEnumerable fileList=dir.GetFiles(“**”),System.IO。
搜索选项。
所有目录);

尝试在类似驱动器的文件夹中搜索它的工作方式:

    string startFolder = @"c:\";
    DirectoryInfo directoryInfo = new DirectoryInfo(startFolder);
    IEnumerable<System.IO.FileInfo> fileList = directoryInfo.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
string startFolder=@“c:\”;
DirectoryInfo DirectoryInfo=新的DirectoryInfo(startFolder);
IEnumerable fileList=directoryInfo.GetFiles(“**”,System.IO.SearchOption.AllDirectories);

尝试在类似驱动器的文件夹中搜索它的工作方式:

    string startFolder = @"c:\";
    DirectoryInfo directoryInfo = new DirectoryInfo(startFolder);
    IEnumerable<System.IO.FileInfo> fileList = directoryInfo.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
string startFolder=@“c:\”;
DirectoryInfo DirectoryInfo=新的DirectoryInfo(startFolder);
IEnumerable fileList=directoryInfo.GetFiles(“**”,System.IO.SearchOption.AllDirectories);

您可以立即过滤掉扩展名为*.dcm的所有文件

string startFolder = @"c:\";
DirectoryInfo directoryInfo = new DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = directoryInfo.GetFiles("*.dcm", System.IO.SearchOption.AllDirectories);
string startFolder=@“c:\”;
DirectoryInfo DirectoryInfo=新的DirectoryInfo(startFolder);
IEnumerable fileList=directoryInfo.GetFiles(“*.dcm”,System.IO.SearchOption.AllDirectories);
之后,使用foreach循环查找具有所需名称的文件,或者打开该文件进行读取并搜索文件中的值

*.dcm是基于文本的文件还是二进制文件?如果它们是基于文本的文件,则可以使用regulare表达式确定搜索字符串是否存在

编辑:下面是执行此任务的示例递归函数。它是一个控制台应用程序,因此可以根据您的需要进行调整:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace FileSearcher
{
    class Program
    {
        static string searchValue = "Windows";
        static List<FileInfo> files = new List<FileInfo>();

        static void Main(string[] args)
        {
            string startFolder = @"C:\";
            DirectoryInfo diParent = new DirectoryInfo(startFolder);

            FindSearchValue(diParent);

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file.FullName);
            }

            Console.WriteLine("Press any key to continue...");
            Console.ReadLine();
        }


        /// <summary>
        /// Recursive function that searches for a file that matches the criteria.
        /// If the file is not found, the current file is opened and it's contents is 
        /// scanned for search value.
        /// </summary>
        /// <param name="diParent">Current parent folder being searched.</param>
        private static void FindSearchValue(DirectoryInfo diParent)
        {
            FileInfo[] foundFiles = diParent.GetFiles("*.doc");

            foreach (var file in foundFiles)
            {
                Console.WriteLine(file.FullName);

                if (file.FullName.Contains(searchValue)) // There is a search string in a file name
                {
                    files.Add(file);
                }
                else
                {
                    string fileContents = File.ReadAllText(file.FullName);

                    if (fileContents.Contains(searchValue)) // Here you can use Regex.IsMatch(fileContents, searchValue)
                    {
                        files.Add(file);
                    }
                }
            }

            foreach (var diChild in diParent.GetDirectories())
            {
                try
                {
                    FindSearchValue(diChild);
                }
                catch (Exception exc)
                {
                    Console.WriteLine("ERROR: {0}", exc.Message);
                }
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.IO;
使用System.Text.RegularExpressions;
命名空间文件搜索器
{
班级计划
{
静态字符串searchValue=“Windows”;
静态列表文件=新列表();
静态void Main(字符串[]参数)
{
字符串startFolder=@“C:\”;
DirectoryInfo diParent=新的DirectoryInfo(startFolder);
FindSearchValue(双亲);
foreach(文件中的var文件)
{
Console.WriteLine(“{0}”,file.FullName);
}
Console.WriteLine(“按任意键继续…”);
Console.ReadLine();
}
/// 
///递归函数,用于搜索符合条件的文件。
///如果未找到该文件,则打开当前文件并显示其内容
///扫描搜索值。
/// 
///正在搜索的当前父文件夹。
私有静态void FindSearchValue(DirectoryInfo diParent)
{
FileInfo[]foundFiles=diParent.GetFiles(“*.doc”);
foreach(foundFiles中的var文件)
{
Console.WriteLine(file.FullName);
if(file.FullName.Contains(searchValue))//文件名中有一个搜索字符串
{
文件。添加(文件);
}
其他的
{
字符串fileContents=File.ReadAllText(File.FullName);
if(fileContents.Contains(searchValue))//这里可以使用Regex.IsMatch(fileContents,searchValue)
{
文件。添加(文件);
}
}
}
foreach(diParent.GetDirectories()中的var diChild)
{
尝试
{
FindSearchValue(diChild);
}
捕获(异常exc)
{
WriteLine(“错误:{0}”,exc.Message);
}
}
}
}
}

此函数使用try-catch块拦截可能发生的异常。例如,找不到文件或访问被拒绝。希望这有帮助

您可以立即过滤掉扩展名为*.dcm的所有文件

string startFolder = @"c:\";
DirectoryInfo directoryInfo = new DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = directoryInfo.GetFiles("*.dcm", System.IO.SearchOption.AllDirectories);
string startFolder=@“c:\”;
DirectoryInfo DirectoryInfo=新的DirectoryInfo(startFolder);
IEnumerable fileList=directoryInfo.GetFiles(“*.dcm”,System.IO.SearchOption.AllDirectories);
之后,使用foreach循环查找具有所需名称的文件,或者打开该文件进行读取并搜索文件中的值

*.dcm是基于文本的文件还是二进制文件?如果它们是基于文本的文件,则可以使用regulare表达式确定搜索字符串是否存在

编辑:下面是执行此任务的示例递归函数。它是一个控制台应用程序,因此可以根据您的需要进行调整:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace FileSearcher
{
    class Program
    {
        static string searchValue = "Windows";
        static List<FileInfo> files = new List<FileInfo>();

        static void Main(string[] args)
        {
            string startFolder = @"C:\";
            DirectoryInfo diParent = new DirectoryInfo(startFolder);

            FindSearchValue(diParent);

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file.FullName);
            }

            Console.WriteLine("Press any key to continue...");
            Console.ReadLine();
        }


        /// <summary>
        /// Recursive function that searches for a file that matches the criteria.
        /// If the file is not found, the current file is opened and it's contents is 
        /// scanned for search value.
        /// </summary>
        /// <param name="diParent">Current parent folder being searched.</param>
        private static void FindSearchValue(DirectoryInfo diParent)
        {
            FileInfo[] foundFiles = diParent.GetFiles("*.doc");

            foreach (var file in foundFiles)
            {
                Console.WriteLine(file.FullName);

                if (file.FullName.Contains(searchValue)) // There is a search string in a file name
                {
                    files.Add(file);
                }
                else
                {
                    string fileContents = File.ReadAllText(file.FullName);

                    if (fileContents.Contains(searchValue)) // Here you can use Regex.IsMatch(fileContents, searchValue)
                    {
                        files.Add(file);
                    }
                }
            }

            foreach (var diChild in diParent.GetDirectories())
            {
                try
                {
                    FindSearchValue(diChild);
                }
                catch (Exception exc)
                {
                    Console.WriteLine("ERROR: {0}", exc.Message);
                }
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.IO;
使用System.Text.RegularExpressions;
命名空间文件搜索器
{
班级计划
{
静态字符串searchValue=“Windows”;
静态列表文件=新列表();
静态void Main(字符串[]参数)
{
字符串startFolder=@“C:\”;
DirectoryInfo diParent=新的DirectoryInfo(startFolder);
FindSearchValue(双亲);
foreach(文件中的var文件)
{
Console.WriteLine(“{0}”,file.FullName);
}
Console.WriteLine(“按任意键继续…”);
Console.ReadLine();
}
/// 
///递归函数,用于搜索符合条件的文件。
///如果未找到该文件,则打开当前文件并显示其内容
///扫描搜索值。
/// 
///C