搜索文件(1)技术要点
搜索文件
许多杀毒软件,一般都是通过检查磁盘中的文件来确定计算机中是否存在病毒。用户在执行这些软件时,会发现这些软件以极快的速度遍历磁盘中的文件,这是如何实现的呢?本例实现了搜索文件的功能。
1、技术要点
其实实现遍历磁盘文件并不困难,可以通过DirectoryInfo.GetFileSystemInfos 方法方法来实现。首先通过DirectoryInfo.GetFileSystemInfos方法方法取得目录中所有子目录和文件的强类型,如果找到文件就通过FileInfo类实例化一个文件对象,判断文件是否是将要查找的文件。如果找到的文件是一个目录或文件夹,则继续遍历目录或文件夹(通过递归)。
DirectoryInfo.GetFileSystemInfos 方法方法返回DirectoryInfo类型的实例包含的文件或目录,其语法格式如下:Public FileSystemInfo[] GetFileSystemInfos()
返回值:FileSystemInfo[],强类型FileSystemInfo项的数组。
注意:因为使用了DirectoryInfo类,所以要添加System.IO命名空间的引用。
1.1 textbox.text.trim() 与textbox.text区别
textbox.text.trim()字符处理函数Trim 截去字串首尾的空格。
TextBox.Text 是接收用户输入的任意字符串,而TextBox.Text.Trim()不能接收用户输入的空格(开头和结尾的空格),由于TextBox.Text 的数据类型是String类型的,所以我们可以把TextBox.Text 看成是一个字符串,你可以对它进行任意字符串的操作,Trim()只是其中一种操作,全部方法来自于String对象,但我们不能把Trim()看成了TextBox中的一个方法,所以TextBox.Text 和 TextBox.Text.Trim() 是没有可比性的。
C#中的 textBox1.Text.Trim() 的 Trim()表示什么意思
去掉前后的空格,比如你不是定格写起 ,去掉空格后就取了你写的那部分不包括空格
1.2 listview.clear()和listview.items.clear()区别
listview.item.clear()后,listview控件中仍然保存着listviewitem项的结构,即listview有多个列,每列可能对应的列标题数据等。
而当你使用了listview.clear()后,整个listview内保存数据的结构就没了。
1.3 MessageBox.Show(string messageBoxText, string caption, System.Windows.MessageBoxButton button, System.Windows.MessageBoxIcon icon)
功能:显示一个消息框,该消息框包含消息、标题栏标题、按钮和图标,并且返回结果。
参数:messageBoxText String,一个 String,用于指定要显示的文本。
Caption String,一个 String,用于指定要显示的标题栏标题。
Button MessageBoxButtons,一个 MessageBoxButtons值,用于指定要显示哪个按钮或哪些按钮。MessageBoxButtons值共有5个选项,MessageBoxButtons.AbortRetryIgnore、MessageBoxButtons.OK、MessageBoxButtons.OKCancel、MessageBoxButtons.RetryCancel、MessageBoxButtons.YesNo、MessageBoxButtons.YesNoCancel。
Icon MessageBoxIcon, MessageBoxImage值共有以下8个选项.
1.4 DirectorySecurity 类
命名空间:System.Security.AccessControl
程序集:System.IO.FileSystem.AccessControl.dll, mscorlib.dll
功能:DirectorySecurity 类指定系统目录的访问权限以及访问尝试的审核方式。
构造函数:DirectorySecurity(String, AccessControlSections),使用指定的 DirectorySecurity 枚举值从指定目录初始化 AccessControlSections 类的新实例。
属性:DirectorySecurity .AreAccessRulesProtected,获取一个布尔值,用于指定与 ObjectSecurity 对象关联的自定义访问控制列表 (DACL) 是否受到保护。
1.5 C#使用ToUpper()与ToLower()方法将字符串进行大小写转换的方法
ToUpper()
功能:将字符c转换为大写英文字母
说明:如果c为小写英文字母,则返回对应的大写字母;否则返回原来的值。
ToLower()
功能:将字符C转换为小写英文字母
说明:如果C为大写英文字母,则返回对应的小写字母;否则返回原来的值。
代码示例:
private void button1_Click(object sender, EventArgs e)
{
textBox2.Text = textBox1.Text.ToUpper();
}
private void button2_Click(object sender, EventArgs e)
{
textBox2.Text = textBox1.Text.ToLower();
}
1.6 String.Contains 方法
Contains: 判断某一个字符串中是否包含某一个字符串,结果是布尔类型.
参数:value String要搜寻的字符串。
返回:Boolean ,如果 true 参数出现在此字符串中,或者 value 为空字符串 (""),则为 value;否则为 false。
注解:此方法执行序号(区分大小写和不区分区域性)比较。 搜索从该字符串的第一个字符位置开始,并继续到最后一个字符的位置。
示例: 下面的示例确定字符串 "fox" 是否为熟悉的引号的子字符串。
String s1 = "The quick brown fox jumps over the lazy dog";
string s2 = "fox";
bool b = s1.Contains(s2);
1.7 C#中foreach的用法
语法:
foreach(数据类型 变量名 in 数组名)
{
//语句块;
}
功能:foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素。
原理:该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到foreach块后面的执行语句。
foreach语句经常与数组一起使用,下面实例将通过foreach语句读取数组的值并进行显示。
代码示例:
class Program
{
static void Main(string[] args)
{
double[] points = { 80, 88, 86, 90, 75.5 };
double sum = 0;
double avg = 0;
foreach(double point in points)
{
sum = sum + point;
}
avg = sum / points.Length;
Console.WriteLine("总成绩为:" + sum);
Console.WriteLine("平均成绩为:" + avg);
}
}