版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#常用IO流与读写文件TOC\o"1-3"\h\u247511.文件系统 28213(1)文件系统类的介绍 229441(2)FileInfo与File类 218072(3)DirectoryInfo与Directory类 210160(4)Path类 228161(5)DriveInfo类 299112.文件操作 316454(1)移动、复制、删除文件 313427(2)判断是文件还是文件夹 3126893.读写文件与数据流 46329(1)读文件 417766(2)写文件 424544(3)数据流 46688(4)使用FileStream读写二进制文件 519656(5)StreamWriter与StreamReader 5218294.映射内存的文件 519555(1)MemoryMappedFile类(.NET4新增) 58057(2)使用示例 6323405.文件安全 65407(1)ACL介绍 617300(2)读取文件的ACL 630953(3)读取文件夹的ACL 62882(4)修改ACL 781546.读写注册表 75907(1)注册表介绍 72712(2).NET操作注册表的类 731725(3)示例 8322447.读写独立的存储器 82230(1)IsolatedStorageFile类 815640(2)示例 8作者:李志伟时间:2014-02-15文件系统文件系统类的介绍文件操作类大都在System.IO命名空间里。FileSystemInfo类是任何文件系统类的基类;FileInfo与File表示文件系统中的文件;DirectoryInfo与Directory表示文件系统中的文件夹;Path表示文件系统中的路径;DriveInfo提供对有关驱动器的信息的访问。注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化。还有个较为特殊的类System.MarshalByRefObject允许在支持远程处理的应用程序中跨应用程序域边界访问对象。FileInfo与File类classProgram{staticvoidMain(string[]args){FileInfofile=newFileInfo(@"E:\学习笔记\C#平台\test.txt");//创建文件Console.WriteLine("创建时间:"+file.CreationTime);Console.WriteLine("路径:"+file.DirectoryName);StreamWritersw=file.AppendText();//打开追加流sw.Write("李志伟");//追加数据sw.Dispose();//释放资源,关闭文件File.Move(file.FullName,@"E:\学习笔记\test.txt");//移动Console.WriteLine("完成!");Console.Read();}}DirectoryInfo与Directory类classProgram{staticvoidMain(string[]args){//创建文件夹DirectoryInfodirectory=newDirectoryInfo(@"E:\学习笔记\C#平台\test");directory.Create();Console.WriteLine("父文件夹:"+directory.Parent.FullName);//输出父目录下的所有文件与文件夹FileSystemInfo[]files=directory.Parent.GetFileSystemInfos();foreach(FileSystemInfofsinfiles){Console.WriteLine(fs.Name);}Directory.Delete(directory.FullName);//删除文件夹Console.WriteLine("完成!");Console.Read();}}Path类classProgram{staticvoidMain(string[]args){Console.WriteLine(Path.Combine(@"E:\学习笔记\C#平台",@"Test\Test.TXT"));//连接Console.WriteLine("平台特定的字符:"+Path.DirectorySeparatorChar);Console.WriteLine("平台特定的替换字符:"+Path.AltDirectorySeparatorChar);Console.Read();}}DriveInfo类classProgram{staticvoidMain(string[]args){DriveInfo[]drives=DriveInfo.GetDrives();foreach(DriveInfodindrives){if(d.IsReady){Console.WriteLine("总容量:"+d.TotalFreeSpace);Console.WriteLine("可用容量:"+d.AvailableFreeSpace);Console.WriteLine("驱动器类型:"+d.DriveFormat);Console.WriteLine("驱动器的名称:"+d.Name+"\n");}}Console.WriteLine("OK!");Console.Read();}}文件操作移动、复制、删除文件classProgram{staticvoidMain(string[]args){stringpath=@"E:\学习笔记\C#平台\Test.txt";File.WriteAllText(path,"测试数据");Console.WriteLine("文件已创建,请查看!");Console.ReadLine();File.Move(path,@"E:\学习笔记\Test.txt");Console.WriteLine("移动完成,请查看!");Console.ReadLine();File.Copy(@"E:\学习笔记\Test.txt",path);Console.WriteLine("文件已复制,请查看!");Console.ReadLine();File.Delete(path);File.Delete(@"E:\学习笔记\Test.txt");Console.WriteLine("文件已删除,请查看!\nOK!");Console.Read();}}判断是文件还是文件夹classProgram{staticvoidMain(string[]args){IsFile(@"E:\学习笔记\C#平台\Test.txt");IsFile(@"E:\学习笔记\");IsFile(@"E:\学习笔记\XXXXXXX");Console.Read();}//判断路径是否是文件或文件夹staticvoidIsFile(stringpath){if(Directory.Exists(path)){Console.WriteLine("是文件夹!");}elseif(File.Exists(path)){Console.WriteLine("是文件!");}else{Console.WriteLine("路径不存在!");}}}读写文件与数据流读文件classProgram{staticvoidMain(string[]args){stringpath=@"E:\学习笔记\C#平台\Test.txt";byte[]b=File.ReadAllBytes(path);Console.WriteLine("ReadAllBytes读二进制:");foreach(bytetempinb){Console.Write((char)temp+"");}string[]s=File.ReadAllLines(path,Encoding.UTF8);Console.WriteLine("\nReadAllLines读所有行:");foreach(stringtempins){Console.WriteLine("行:"+temp);}stringstr=File.ReadAllText(path,Encoding.UTF8);Console.WriteLine("ReadAllText读所有行:\n"+str);Console.Read();}}写文件classProgram{staticvoidMain(string[]args){stringpath=@"E:\学习笔记\C#平台\Test.txt";File.WriteAllBytes(path,newbyte[]{0,1,2,3,4,5,6,7,8,9});//写入二进制Console.WriteLine("WriteAllBytes写入二进制成功");Console.ReadLine();string[]array={"123","456","7890"};File.WriteAllLines(path,array,Encoding.UTF8);//写入所有行Console.WriteLine("WriteAllLines写入所有行成功");Console.ReadLine();File.WriteAllText(path,"abcbefghijklmn",Encoding.UTF8);//写入字符串Console.WriteLine("WriteAllText写入字符串成功\nOK!");Console.Read();}}数据流最常用的流类如下:FileStream:文件流,可以读写二进制文件。StreamReader:流读取器,使其以一种特定的编码从字节流中读取字符。StreamWriter:流写入器,使其以一种特定的编码向流中写入字符。BufferedStream:缓冲流,给另一流上的读写操作添加一个缓冲层。数据流类的层次结构:使用FileStream读写二进制文件classProgram{staticvoidMain(string[]args){stringpath=@"E:\学习笔记\C#平台\Test.txt";//以写文件的方式创建文件FileStreamfile=newFileStream(path,FileMode.CreateNew,FileAccess.Write);stringstr="测试文件--李志伟";byte[]bytes=Encoding.Unicode.GetBytes(str);file.Write(bytes,0,bytes.Length);//写入二进制file.Dispose();Console.WriteLine("写入数据成功!!!");Console.ReadLine();//以读文件的方式打开文件file=newFileStream(path,FileMode.Open,FileAccess.Read);byte[]temp=newbyte[bytes.Length];file.Read(temp,0,temp.Length);//读取二进制Console.WriteLine("读取数据:"+Encoding.Unicode.GetString(temp));file.Dispose();Console.Read();}}StreamWriter与StreamReader使用StreamWriterStreamReader就不用担心文本文件的编码方式,所以它们很适合读写文本文件。classProgram{staticvoidMain(string[]args){stringpath=@"E:\学习笔记\C#平台\Test.txt";//以写文件的方式创建文件FileStreamfile=newFileStream(path,FileMode.Create,FileAccess.Write);StreamWritersw=newStreamWriter(file);sw.WriteLine("测试文件--李志伟");sw.Dispose();Console.WriteLine("写入数据成功!!!");Console.ReadLine();//以读文件的方式打开文件file=newFileStream(path,FileMode.Open,FileAccess.Read);StreamReadersr=newStreamReader(file);Console.WriteLine("读取数据:"+sr.ReadToEnd());sr.Dispose();Console.Read();}}映射内存的文件MemoryMappedFile类(.NET4新增)应用程序需要频繁地或随机地访问文件时,最好使用MemoryMappedFile类(映射内存的文件)。使用这种方式允许把文件的一部分或者全部加载到一段虚拟内存上,这些文件内容会显示给应用程序,就好像这个文件包含在应用程序的主内存中一样。使用示例classProgram{staticvoidMain(string[]args){MemoryMappedFilemmfile=MemoryMappedFile.CreateFromFile(@"E:\Test.txt",FileMode.OpenOrCreate,"MapName",1024*1024);MemoryMappedViewAccessorview=mmfile.CreateViewAccessor();//内存映射文件的视图//或使用数据流操作内存文件//MemoryMappedViewStreamstream=mmfile.CreateViewStream();stringstr="测试数据:李志伟!";intlength=Encoding.UTF8.GetByteCount(str);view.WriteArray<byte>(0,Encoding.UTF8.GetBytes(str),0,length);//写入数据byte[]b=newbyte[length];view.ReadArray<byte>(0,b,0,b.Length);Console.WriteLine(Encoding.UTF8.GetString(b));mmfile.Dispose();//释放资源Console.Read();}}文件安全ACL介绍ACL是存在于计算机中的一张表(访问控制表),它使操作系统明白每个用户对特定系统对象,例如文件目录或单个文件的存取权限。每个对象拥有一个在访问控制表中定义的安全属性。这张表对于每个系统用户有拥有一个访问权限。最一般的访问权限包括读文件(包括所有目录中的文件),写一个或多个文件和执行一个文件(如果它是一个可执行文件或者是程序的时候)。读取文件的ACLclassProgram{staticvoidMain(string[]args){FileStreamfile=newFileStream(@"E:\Test.txt",FileMode.Open,FileAccess.Read);FileSecurityfilesec=file.GetAccessControl();//得到文件访问控制属性//输出文件的访问控制项foreach(FileSystemAccessRulefileruleinfilesec.GetAccessRules(true,true,typeof(NTAccount))){Console.WriteLine(filerule.AccessControlType+"--"+filerule.FileSystemRights+"--"+filerule.IdentityReference);}file.Dispose();Console.Read();}}读取文件夹的ACLclassProgram{staticvoidMain(string[]args){DirectoryInfodir=newDirectoryInfo(@"E:\学习笔记\C#平台");DirectorySecurityfilesec=dir.GetAccessControl();//得到文件访问控制属性//输出文件的访问控制项foreach(FileSystemAccessRulefileruleinfilesec.GetAccessRules(true,true,typeof(NTAccount))){Console.WriteLine(filerule.AccessControlType+"--"+filerule.FileSystemRights+"--"+filerule.IdentityReference);}Console.Read();}}修改ACLclassProgram{staticvoidMain(string[]args){FileStreamfile=newFileStream(@"E:\Test.txt",FileMode.Open,FileAccess.Read);FileSecurityfilesec=file.GetAccessControl();//得到文件访问控制属性Print(filesec.GetAccessRules(true,true,typeof(NTAccount)));//输出文件访问控制项FileSystemAccessRulerule=newFileSystemAccessRule(newNTAccount(@"CENTER-YFB-512\LiZW"),//计算机账户名FileSystemRights.Delete,//操作权限AccessControlType.Allow);//能否访问受保护的对象filesec.AddAccessRule(rule);//增加ACL项Print(filesec.GetAccessRules(true,true,typeof(NTAccount)));//输出文件访问控制项filesec.RemoveAccessRule(rule);//移除ACL项Print(filesec.GetAccessRules(true,true,typeof(NTAccount)));//输出文件访问控制项file.Dispose();Console.Read();}//输出文件访问控制项staticvoidPrint(AuthorizationRuleCollectionrules){foreach(FileSystemAccessRulefileruleinrules){Console.WriteLine(filerule.AccessControlType+"--"+filerule.FileSystemRights+"--"+filerule.IdentityReference);}Console.WriteLine("================================================");}}读写注册表注册表介绍Windows注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套数据文件,运行regedit可以看到5个注册表配置单元(实际有7个):HKEY-CLASSES-ROOT: 文件关联和COM信息HKEY-CURRENT-USER: 用户轮廓HKEY-LOCAL-MACHINE: 本地机器系统全局配置子键HKEY-USERS: 已加载用户轮廓子键HKEY-CURRENT-CONFIG:当前硬件配置.NET操作注册表的类在.NET中提供了Registry类、RegistryKey类来实现对注册表的操作。其中Registry类封装了注册表的七个基本主健:Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 Registry.CurrentUser 对应于HKEY_CURRENT_USER主键 Registry.LocalMachine 对应于HKEY_LOCAL_MACHINE主键 Registry.User 对应于HKEY_USER主键 Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键 Registry.DynDa 对应于HKEY_DYN_DATA主键 Registry.PerformanceData对应于HKEY_PERFORMANCE_DATA主键RegistryKey类封装了对注册表的基本操作,包括读取,写入,删除。其中读取的主要函数有: OpenSubKey() 主要是打开指定的子键。 GetSubKeyNames() 获得主键下面的所有子键的名称,它的返回值是一个字符串数组。 GetValueNames() 获得当前子键中的所有的键名称,它的返回值也是一个字符串数组。GetValue() 指定键的键值。写入的函数: CreateSubKey() 增加一个子键 SetValue() 设置一个键的键值删除的函数: DeleteSubKey() 删除一个指定的子键。 DeleteSubKeyTree() 删除该子键以及该子键以下的全部子键。示例classProgram{staticvoidMain(string[]args){stringpath=@"SOFTWARE\Microsoft\InternetExplorer\Extensions";RegistryKeypregkey=Registry.LocalMachine.OpenSubKey(path,true);//以只读方式if(pregkey!=null){Console.WriteLine(pregkey.Name+"--"+pregkey.SubKeyCount+"--"+pregkey.ValueCount);stringpreName=System.Guid.NewGuid().ToString();pregkey.CreateSubKey(preName);//增加一个子键RegistryKeynew_pregkey=Registry.LocalMachine.OpenSubKey(path+@"\"+preName,true);new_pregkey.SetValue("姓名","李志伟");//设置一个键的键值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省连云港市赣榆区中考语文质检试卷(3月份)
- 复发性流产的诊断与治疗
- 2026年上半年教师资格证中学数学综合素质真题单套试卷
- 高考题海-语文模拟试题
- (2025年)事业单位公共基础知识考前必做题及答案解析
- (2025年)六安市霍邱县公安辅警招聘知识考试题库及答案
- 绥化市庆安县2025-2026学年第二学期五年级语文期末考试卷(部编版含答案)
- 锡林郭勒盟正镶白旗2025-2026学年第二学期二年级语文第八单元测试卷部编版含答案
- 铁岭市开原市2025-2026学年第二学期五年级语文第七单元测试卷(部编版含答案)
- 呼伦贝尔市根河市2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 中考英语阅读理解练习与重点词汇汇编
- 《古蜀文明保护传承工程实施方案》
- 建筑垃圾资源化监理实施细则
- 2026年太原市高三下学期一模语文试卷和答案
- 2025-2030中国导电塑料市场投资风险及应用趋势预测研究报告
- 中国成人体重管理指南2025解读
- 2025年宁波能源实业有限公司招聘备考题库及完整答案详解一套
- 行政事业单位会计监督制度
- 宁波水务面试常见面试技巧解析
- 钻井液与钻井的关系
- 第八章 公关礼仪文体的写作
评论
0/150
提交评论