文件与注册表
在C#语言中进行文件操作时,用户也不需要关心文件的具体存储格式。只要利用.NET框架结构所封装的对文件操作的统一外部接口,就可以保证程序在不同的文件系统上能够良好地移植。
.NET框架结构在System.IO名称空间中提供了多种类型,用于进行数据文件和数据流的读写操作。这些操作可以同步进行,也可以异步进行。
文件是指在各种存储介质上(例如可移动磁盘、硬盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。
流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者TCP/IP 套接字。
流涉及三种基本操作:
(1) 读取:从流到数据结构(如字节数组)的数据传输。
(2) 写入:从数据结构到流的数据传输。
(3) 查找:对流内的当前位置进行查询和修改。
.NET框架结构在名称空间System.IO中提供了Directory类来进行目录管理。利用Directory类可以完成进行创建、移动、浏览目录(或子目录)等操作,甚至还可以定义隐藏目录和只读目录。
Directory类是一个密封类,它的所有方法都是静态的,因而不必具有目录的实例就可直接调用。
Directory类的常用方法如下:
(1) CreateDirectory方法:创建子目录
(2) Delete方法:删除目录及其内容
(3) GetCurrentDirectory():获取应用程序的当前工作目录
File类,其常用方法包括:
FileStream类,其常用属性包括:
(1) CanRead:决定当前文件流是否支持文件读取操作;
(2) CanSeek:决定当前文件流是否支持文件移动操作;
(3) CanWrite:决定当前文件流是否支持文件写入操作;
(4) Length:获取用字节表示的文件流的长度;
(5) Position:获取或设置文件流的当前位置。
FileStream类,其常用方法包括:
(1) Close方法:用于关闭文件流
(2) Read方法:实现文件流的读取
(3) ReadByte方法:用于从文件流中读取一个字节的数据
(4) Write方法:负责将数据写入到文件中
(5) WriteByte方法:用于向文件流中写入一个字节的数据
(6) Flush方法 :负责将保存在缓冲区中的所有数据真正写入到文件中
注册表即是在Windows中用于存储有关计算机配置信息的数据库。注册表中包含了关于计算机运行方式的配置信息,其中包括Windows操作系统配置信息、应用程序配置信息、专用用户设备配置信息、环境配置信息等。
Microsoft提供给用户一个用于编辑注册表的工具Regedit,它具有对注册表进行操作的强大功能。
注册表是一个庞大的数据库,其中的每一主键,每一键值都赋予了不同的功能。
.NET框架结构在Microsoft.Win32名称空间内提供了两个类用于注册表操作:Registry和RegistryKey。这两个类都是密封类,不允许被其它类继承。在这两个类中,定义了许多关于注册表操作的方法和属性,通过调用这两个类,就可以在Visual C#中轻松处理关于注册表的各种操作了。
(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,其中包含有关默认用户的配置信息。
RegistryKey类表示Windows注册表中的子键。该类中封装了对Windows系统注册表的基本操作,包括对注册表信息的读取、删除、修改和重命名等,RegistryKey类中的一些常用方法有:
(1) CreateSubKey方法
(2) SetValue方法
(3) OpenSubKey方法
(4) OpenRemoteBaseKey方法
(5) DeleteSubKey方法
(6) DeleteSubKeyTree方法
(7) DeleteValue方法
(8) GetValue方法

浙公网安备 33010602011771号