在windows桌面应用程序中,经常会操作目录和文件,例如,删除目录,删除文件,写入文件和新建文件等操作,有时在对文件或目录进行操作时,还会操作注册表的相关信息,这些操作在Visual c# 中可以很方便的实现文件的存储管理,对文件的读写等各种操作。
一.管理文件系统
管理文件系统主要是对计算机中文件和目录的管理,例如,读取问件信息、删除文件和读取目录信息等。这些功能主要有System..IO命名空间下的类对文件和目录进行操作。System..IO命名空间为目录和文件的操作提供了必要的类,方法和属性。
在System..IO命名空间中提供了Directory类和Directorylnfo类来进行目录管理,可以完成对目录及其子目录的创建、移动、浏览等操作。Directory类的所有方法都是静态的,因此无需实例化对象即可调用,这些方法可以操纵和查询任何目录的信息。Directorylnfo类是需要实例化成员才可以调用其方法的,Directorylnfo类实例化后,就可以获取目录的创建时间和最后修改时间等状态。
Directory类和Directorylnfo类的一些方法和属性:
- Exists方法:该方法接受一个参数,该参数表示包含当前目录路径的字符串。Exists方法返回结果指示目录是否存在,如果存在则返回true,否则返回false。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button3_Click(object sender, EventArgs e) { string stringPath = "c:\\TestDirectory"; if (Directory.Exists(stringPath)) { label3.Text = "该目录存在,请继续操作"; } else { label3.Text = "该目录不存在,请检查路径是否正确"; } } } }
CreatDirectory方法:此方法接受一个创建目录路径的String类型参数,该方法会根据此路径创建新目录。并且该方法返回一个DirectoryInfo实例,如果创建的目录已经存在,则返回代表指定目录的类实例,不会创建目录,也不会产生异常。下面实例演示如何创建目录:
If(!Directory.Exists(“C:\\TestDircetory”))
{
Directory.CreateDirectory(“C:\\TestDirectory”)
}
DirectoryInfo类的Attibutes属性和其他属性
DirectoryInfo类的Attibutes属性可以获取或设置当前目录的相关属性,该实例使用Attibutes属性设置并获取C:\TeatDirectory目录的相关属性:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { String stringPath="c:\\TestDirectory"; if(Directory.Exists(stringPath)) { DirectoryInfo info = new DirectoryInfo(stringPath); info.Attributes = FileAttributes.Hidden; label3.Text += "目录创建时间:" + info.CreationTime.ToString() + "\n"; label3.Text += "全部名称:" + info.FullName + "\n"; label3.Text += "最后一次访问该目录时间:" + info.LastAccessTime.ToString() + "\n"; label3.Text += "最后一次修改目录时间:" + info.LastWriteTime.ToString() + "\n"; label3.Text += " DirectoryInfo实例名称:" + info.Name + "\n"; label3.Text += " 父目录::" + info.Parent + "\n"; label3.Text += " 路径根部分:" + info.Root.ToString(); } else { label3.Text="该目录不存在,请检查路径是否正确"; } } } }
运行结果:
- Delete方法:
Directory类的Delete方法可删除指定的目录,fai方法为一个重载方法,可以接受一个参数或者两个参数。
- Move方法:
Move方法表示将指定文件移到新位置,并提供新文件名的选项。
- GetFiles方法:
GetFiles方法可以返回该目录岁包含的所有文件的文件名,不能返回其子目录文件名。
- DetDirectories方法
二.File类和FileInfo类
System.IO命名空间的File类和FilInfo类提供有关系统操作的相关内容,例如创建,删除,移动和打开文件等。File类的操作方式和Diretory类相似,File类中的方法大多都为静态方法,而FileInfo类与DiretoryInfo类相似,只有在实例化的情况下才可以使用其属性和方法。
File类,其常用方法包括:
Create()方法:用于新建一个文件 。
打开文件,包括:Open、OpenRead、OpenText 等
Copy()方法:用于复制一个文件
Delete()方法:用于删除一个文件
Move()方法:用于移动一个文件
三.Path类
Path类对包含文件或目录路径信息的String实例执行操作,并且以跨平台的方式执行这些操作。
四.读写文件
StreamReader类:
StreamReader类的常用方法包括Read方法和ReadLine方法。
Read方法
Read方法用于读取输入流中的下一个字符,并使当前流的位置提升一个字符。其方法原型为:
public override int Read();
ReadLine方法
ReadLine方法从当前流中读取一行字符并将数据作为字符串返回。其方法原型为:
public override string ReadLine();
StreamReader类的常用方法包括Write方法和WriteLine方法。
write方法
可用于将字符、字符数组、字符串等写入流
WriteLine方法
WriteLine方法用于将后跟行结束符的字符、字符数组、字符串等写入文本流。
五.注册表概述
注册表即是在Windows中用于存储有关计算机配置信息的数据库。注册表中包含了关于计算机运行方式的配置信息,其中包括Windows操作系统配置信息、应用程序配置信息、专用用户设备配置信息、环境配置信息等。
Microsoft提供给用户一个用于编辑注册表的工具Regedit,它具有对注册表进行操作的强大功能。
注册表是一个庞大的数据库,其中的每一主键,每一键值都赋予了不同的功能。
1.Registry类
Registry类用于提供访问注册表中的值和子键的基Registrykeys。该类中封装了7个公有的静态域,分别代表Windows注册表中的7个基本主键,具体如下所示:
(1) ClassesRoot
该域用于读取Windows注册表中的基本主键HKEY_CLASSES_ROOT。定义文档的类型(或类)以及与那些类型关联的属性。
(2) CurrentConfig:该域用于读取Windows注册表中的基本主键HKEY_CURRENT_CONFIG,其中包含有关非用户特定的硬件配置信息。
(3) CurrentUser:该域用于读取Windows注册表中的基本主键HKEY_CURRENT_USER,其中包含有关当前用户首选项的信息。
(4) DynData:该域用于读取Windows注册表中的基本主键HKEY_DYN_DATA,其中包含动态注册表数据。
(5) LocalMachine:该域用于读取Windows注册表中的基本主键HKEY_LOCAL_MACHINE,其中包含本地计算机的配置数据。
(6) PerformanceData:该域用于读取Windows注册表中的基本主键HKEY_PERFORMANCE_DATA,其中包含软件组件的性能信息。
(7) Users:该域用于读取Windows注册表中的基本主键HKEY_USERS,其中包含有关默认用户的配置信息。
2.RegistryKey类
RegistryKey类表示Windows注册表中的子键。该类中封装了对Windows系统注册表的基本操作,包括对注册表信息的读取、删除、修改和重命名等,RegistryKey类中的一些常用方法有:
(1) CreateSubKey方法
(2) SetValue方法
(3) OpenSubKey方法
(4) OpenRemoteBaseKey方法
(5) DeleteSubKey方法
(6) DeleteSubKeyTree方法
(7) DeleteValue方法
(8) GetValue方法