《C#高级编程》读书笔记(十六):文件和注册表操作

1,Directory类和File类

    只包含静态方法,不能被实例化。只要调用一个成员方法,提供合适文件系统对象的路径,就可以使用这些类。如果只对文件夹或文件执行一个操作,使用这些类就很有效,因为这样可以省去实例化.NET类的系统开销。

            File.Copy(@"C:\1.txt",@"D:\copy.txt");

2,DirectoryInfo类和FileInfo类

    这两个类实现与Directory类和File大致相同的公共方法,并拥有一些公共属性和公共函数,但他们都是有状态的,并且这些类的成员都不是静态的。需要实例化这些类,之后把每个实例与特定的文件夹或文件关联起来。如果使用同一个对象执行多个操作,使用这些类就比较有效。

            FileInfo myFile = new FileInfo(@"C:\1.txt");
            myFile.CopyTo(@"D:\copy.txt");

3,Path类

    Path类不能被实例化。然而,它提供了一些静态方法,可以更容易地对路径名执行操作。

    比如要显示文件夹C:\My Documents中的ReadMe.txt文件的完整路径名,可以使用下述代码查找文件的路径:

            Console.WriteLine(Path.Combine(@"C:\My Documents","ReadMe.txt"));

4,移到、复制和删除文件

     移动和删除文件或文件夹可以使用FileInfo和DirectoryInfo类的MoveTo()和Delete()方法来完成。

     File和Directory类的这两个对应方法时Move()和Delete()。

     FileInfo和File类也分别实现CopyTo()和Copy()方法。

     没有复制完整文件夹的方法,而应复制文件夹中的每个文件。

5,读写文件

    在.NET Framework 4.5中,可以通过File对象读写文件。

    读取:

textBox2.Text = File.ReadAllText(textBox1.Text);

    写入:

File.WriteAllText(textBox1.Text,textBox2.Text);

6,流

    流是一个用于传输数据的对象,数据可以向两个方向传输:

    1)如果数据从外部源传输到程序中,这就是读取流。

    2)如果数据从程序传输到外部源中,这就是写入流。

    对于文件的读写,最常用的类如下:

    FileStream(文件流)——这个类主要用于在二进制文件中读写二进制数据——也可以使用它读写任何文件。

    StramReader(流读取器)和StreamWriter(流写入器)——这两个类专门用于读写文本文件。

StreamReader sr = new StreamReader(@"C:\My Documents\ReadMe.txt

    把StreamReader关联到FileStream上。其优点是可以指定是否创建文件和共享许可。

            FileStream fs = new FileStream(@"C:\My Documents\ReadMe.txt",FileMode.Open,FileAccess.Read,FileShare.None);
            StreamReader sr= new StreamReader(fs);

   从一个FileInfo实例中获得StreamReader:

            FileInfo myFile = new FileInfo(@"C:\1.txt");
            StreamReader sr = myFile.OpenText();

   StreamWriter类的工作方式与StreamReader类似,但StreamWriter只能用于写入文件(或另一个流)。

7,读取驱动器信息

    读取驱动器信息可以使用DriveInfo类实现。该类可以扫描系统,提供可用驱动器的列表,还可以进一步提供任何驱动器的大量细节。

8,读写注册表

    注册表是包含Windows安装、用户首选项,以及自己安装软件和设备的所有配置信息的核心存储库。

    访问注册表,可以使用MicroSoft.Win32名称空间中的两个类Registry和RegistryKey。RegistryKey实例表示一个注册表键。这个类实现的方法可以浏览子键、创建新键、读取或修改键中的值。换言之,该类通常可以完成对注册表键进行的所有操作。

    Registry类只能对注册表键进行单一的访问,以执行简单的操作。Registry类的另一个作用是提供表示顶级键的RegistryKey示例(不同的配置单元),以便开始在注册表中定位。

    如果要读取HKLM/Software/Microsoft键中的一些数据,就可以使用下面的代码获得它的一个引用:

            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey hkSofeware = hklm.OpenSubKey("Software");
            RegistryKey hkMicrosoft = hkSofeware.OpenSubKey("Microsoft");

    如果要创建一个键,就应使用CreateSubKey()方法(该方法会通过返回的引用,自动提供该键的读写访问):

            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey hkSofeware = hklm.OpenSubKey("Software");
            RegistryKey hkMicrosoft = hkSofeware.CreateSubKey("MyOwnSoftware");

   CreateSubKey()方法的工作方式:如果键不存在,它就创建这个键。如果这个键已经存在,就返回一个表示该键的RegistryKey实例。

posted @ 2016-09-03 16:01  逍遥king  阅读(306)  评论(0编辑  收藏  举报