C# 在特定驱动器c中搜索扩展名为.dcm的文件#
我试图通过输入文件名或文件内容来搜索扩展名为.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
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