C#高级编程-文件和注册表操作

Directory类和File类只包含静态方法,不能被实例化。
Directory类和FileInfo类 实现与Directory类和File类大致相同的方法,并拥有一些公共属性和构造函数,但它们都是有状态的,并且这些类的成员都不是静态的。
FileInfo myfile=new FileInfo(@"文件路径");
使用Exists检测对象是否存在:myfile.Exists;返回bool
myfile.CopyTo(@"路径");
上面代码时间长,需要实例化对象,而下面代码不需要实例化对象,二者的结果一样
File.Copy(@"原路径",@"复制的路径")
处理文件夹使用 Directory
DirectoryInfo myFolder=new DirectoryInfo(@"文件夹路径")
属性:
CreationTime 创建文件、文件夹的时间。DirectoryName 仅用于FileInfo,包含文件夹的完整路径名。
Parent 仅用于DirectoryInfo 制定子目录的父目录。
Exists 文件或文件夹是否存在。
Extension 文件的扩展名,对于文件夹它返回空白。
FullName 文件或文件夹的完整路径名。
LastAccessTime 最后一次访问文件或文件夹的时间。
LastWriteTime 最后一次修改文件或文件夹的时间。
Name 文件或文件夹的名称。
Root 仅用于DirectoryInfo 路径的根部分。
Length 返回文件的大小,仅用于Fileinfo。
方法:
Create() 创建给定的文件夹或空文件。对于FileInfo,该方法会返回一个流对象,以便写入文件。
Delete() 删除文件或文件夹。对于文件夹,有一个可以递归的Delete选项。
MoveTo() 移动或重命名文件和文件夹。
Copy() 复制文件
CopyTo() 只用于FileInfo复制文件,注意文件夹没有复制方法。如果复制完整的目录树,需要单独复制每个文件,创建对应予旧文件夹的新文件夹。
GetDirectories() 只适用于DirectoryInfo 返回DirectoryInfo对象数组,该数组表示文件夹中包含的所有文件。
GetFiles() 只适用于DirectoryInfo 返回FileInfo对象数组,该数组表示文件夹中包含的所有文件。

FileInfo 也可以实现Open(),OpenRead(),OpenText(),OpenWrite(),Create(),CreateText()等方法。

Path类不能实例化,但是提供了一些静态方法。显示文件夹中某个文件的完整路径名使用方法:Path.Combine(@"文件夹路径","文件名");
流是一个用于传输数据的对象,根据数据传输方向分为读取流和写入流。
MemoryStream读写内存,NetworkStream处理网络数据。
把传输数据的概念与特定的数据源分离开来,可以更容易交换数据源。
FileStream用于二进制文件中读写二进制数据,可以使用它读写任何文件。
StreamReader,StreamWriter专门用于读写文件。
FileMode :Append,Create,CreateNew,Open,OpenOrCreate,Truncate 模式
FileAccess:Read,ReadWrite,Write 访问方法
FileShare: Delete,Inheritable,None,Read,ReadWrite,Write 共享参数
FileStream fs=new FileStream(@"路径",FileMode.Create);
FileStream fs=new FileStream(@"路径",FileMode.Create,FileAccess.Write);
FileStream fs=new FileStream(@"路径",FileMode.Create,FileAccess.Write,FileShare.None);
使用完一个流以后使用fs.Close();方法关闭。
1、FileStream fs=new FileStream(@"路径",FileMode.Open);
StreamReader sr=new StreamReader(fs);
2、FileInfo file=new FileInfo(@"路径");
StreamReader sr=file.OpenText();
3、StreamReader sr=new StreamReader(@"路径",编码方法);


sr.Read();sr.ReadLine();sr.ReadToEnd();
1、StreamWrite sw=new StreamWrite(@"路径",true,Encoding.ASCII)
2、FileStream fs=new FileStream(@"路径",FileMode.WriteNew,FileAccess.Write,FileShare.Read);
StreamReader sr=new StreamReader(fs);
3、FileInfo file=new FileInfo(@"路径");
StreamReader sr=file.WriteText();


映射内存的文件
应用程序需要频繁地或随机地访问文件时,最好使用映射内存的文件和这个名称空间。
把文件加载到一段虚拟内存中,这些文件可以用作多个进程的共享资源。
为了使用映射内存的文件,必须使用两个对象:映射内存的文件实例,访问器对象。


读取驱动器信息使用DriveInfo
  var di = DriveInfo.GetDrives().ToList();
            di.ForEach(m =>
            {
                Console.WriteLine(m);
                Console.WriteLine(m.TotalSize);
            });
文件的ACL myfile.GetAccessControl;
 using (var myfile=new FileStream(@"I:\tt1.txt",FileMode.Open,FileAccess.Read))
            {
                FileSecurity fs = myfile.GetAccessControl();
                foreach (FileSystemAccessRule s in fs.GetAccessRules(true,true,typeof(NTAccount)))
                {
                    Console.WriteLine(s.FileSystemRights);
                }
            }
注册表
HKEY_CLASSES_ROOT 包含系统上文件类型的细节,以及使用那些应用程序可以打开每种文件,还包含所有COM组件的注册信息。
HKEY_CURRENT_USERS 包含用户目前登陆的计算机的用户配置。这些配置包括桌面设置、环境变量、网络和打印机连接以及其他定义用户的操作环境的设置。
HKEY_LOCAL_MACHINE 是一个很大的配置单元,其中包含所有安装到计算机上的软件和硬件信息,这些设置不是用户特有的,而是用于所有登录到计算机上的用户。
HKEY_USERS 包含所有用户的用户首选项,
HKEY_CURRENT_CONFIG 包含计算机上硬件的详细信息。
HEKY_DYN_DATA 容器,包含存储在注册表中的任意易失性数据。
注册表类 Registry RegistryKey 
RegistryKey表示一个注册表键,该类实现的方法可以浏览子建,创建新建,读取/修改键的值.
Registry 只能对注册表键进行单一的访问,以执行简单的操作。
 RegistryKey hklm = Registry.LocalMachine;
            var s = hklm.OpenSubKey("SoftWare");
            var d = s.OpenSubKey("RegisteredApplications");

            Console.WriteLine(d.GetValue("360se6"));

测试代码

 class Program
    {
        static void Main(string[] args)
        {
            using (var mmfile = MemoryMappedFile.CreateFromFile(@"I:\tt1.txt", FileMode.Create, "fileHandle", 1024 * 1024))
            {
                string writemsg = DateTime.Now.ToString();
                var myAccesstor = mmfile.CreateViewAccessor();
                myAccesstor.WriteArray(0, Encoding.ASCII.GetBytes(writemsg), 0, writemsg.Length);


                var read = new byte[writemsg.Length];
                myAccesstor.ReadArray(0, read, 0, read.Length);
                var sr = Encoding.ASCII.GetString(read);
                Console.WriteLine(sr);


                Console.ReadLine();
            }
            var di = DriveInfo.GetDrives().ToList();
            di.ForEach(m =>
            {
                Console.WriteLine(m);
                Console.WriteLine(m.TotalSize);
            });
            using (var myfile = new FileStream(@"I:\tt1.txt", FileMode.Open, FileAccess.Read))
            {
                FileSecurity fs = myfile.GetAccessControl();
                foreach (FileSystemAccessRule s in fs.GetAccessRules(true, true, typeof(NTAccount)))
                {
                    Console.WriteLine(s.FileSystemRights);
                }
            }
            RegistryKey hklm = Registry.LocalMachine;
            var s = hklm.OpenSubKey("SoftWare");
            var d = s.OpenSubKey("RegisteredApplications");
            Console.WriteLine(d.GetValue("360se6"));


            Console.ReadLine();
        }
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值