版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件操作思政目标:
☞掌握文件系统的知识,主动获取、查询、检索信息,培养主观能动性
☞明白文件保护的重要性,重视上网安全技能要求:
☞了解文件系统相关概念和常用操作
☞了解文件处理流的相关概念及常用类实践目标:
☞能够学会创建文件,能够对文件进行处理
☞学会熟练运用Stream类对文件进行操作第14章访问路径Stream类访问01PART访问属性说明AvailableFreeSpace只读属性,用于确定驱动器上的可用空间大小DriveTypeCDRom:表示CD-ROM驱动器Fixed:表示一个不可随意移除的固定硬盘Network:表示一个网络驱动器NoRootDirectory:表示一个没有根目录的驱动器Ram:表示一个RAM驱动器Removable:表示一个可移除的驱动器Unknown:表示一个未知的驱动器类型DriveFormat只读属性,用于确定驱动器上的文件系统格式类型,如NTFS、FAT和FAT32Name只读属性,用于获得驱动器的名称TotalFreeSpace只读属性,用于确定磁盘上的总可用空间量,它没有考虑用户的空间配额TotalSize用于确定驱动器上的总空间量驱动器的访问需要借助于DriveInfo类来实现,它是密封类驱动器访问驱动器的访问,常用方法主要是GetDrives(),该方法用于获得所有可用驱动器的列表访问在执行上面的程序时,若磁盘没有准备好,或者机器上有虚拟磁盘等,会导致出现异常,此时可以利用try-catch来检测异常。访问目录的访问需要借助于Directory类和DirectoryInfo类来实现。Directory类的常用方法目录访问方法说明CreateDirectory()创建一个新目录Delete()删除一个目录Exists()确定目录是否存在。如果将目录路径传递给该方法,它会返回一个bool值以表明目录是否存在。这是Directory类中最常用的方法,并且通常和if语句配合使用GetFiles()获取目录中的文件的列表GetDirectories()获取目录中的子目录的列表GetLogicalDrives()获取本地计算机上的逻辑驱动器的列表GetParent()获取指定目录的父目录Move()将目录移动到另一个位置访问DirectoryInfo类的常用属性是Name和FullName。Name属性获取目录的名称,FullName属性获取目录的名称以及完整路径目录访问DirectoryInfo类的常用方法属性说明Create()创建一个目录CreateSubDirectory()为当前目录创建子目录GetDirectories()获取当前目录中的子目录的列表GetFiles()获取当前目录中的文件的列表MoveTo()将目录移动到另一个位置Delete()删除一个目录下面首先看文件夹的创建、存在性检测及删除访问文件夹下文件的遍历是个常见应用,比如播放器搜索指定目录下所有mp3文件、清除系统垃圾文件、文件搜索等功能都离不开文件的遍历。下面的代码演示了如何遍历C盘下的子文件夹及文件访问文件的访问需要借助于File类和FileInfo类来实现文件访问File类的常用方法方法含义Create()创建一个文件Copy()复制一个文件Delete()删除一个文件Exists()确定文件是否存在。需要将文件路径传递给该方法,然后它将返回一个bool值以表明文件是否存在。这是File类中最常用的方法,并且通常和if语句一起使用Move()移动一个文件Replace()用另一个文件替换或改写某个文件AppendText()创建StreamWriter类,将该类配置为在指定的文件中追加文本Open()以FileStream打开指定的文件,然后,可以使用FileStream类的对象将文本写入该文件ReadAllText()打开文件,读取文件中的所有文本,将读取的文本存储到字符串变量中,然后关闭该文件WriteAllText()创建一个新文件或改写一个现有文件,将字符串变量的内容写入文件,然后关闭该文件ReadAllLines()打开文件,读取文件中的所有文本,将读取的文本存储到字符串数组中,然后关闭该文件WriteAllLines()创建一个新文件或改写一个现有文件,将字符串数组的内容写入文件,然后关闭该文件访问FileInfo类的常用属性有Directory、Length和Name。Directory属性获取包含文件的目录,Length属性获取文件的大小,Name属性获取文件的名称文件访问FileInfo类的常用方法方法说明Create()创建一个文件AppendText()创建StreamWriter类以向文件追加文本Open()打开一个文件CopyTo()将文件复制到一个新文件并且可以选择改写任何现有文件Delete()删除一个文件MoveTo()将文件移动到一个新目录。如果新目录中已经存在同名文件,则将引发异常Replace()用当前FileInfo指代的文件内容替换作为参数传入的文件这两个类的使用方式与Directory和DirectoryInfo类似,只是这里是针对文件的创建、删除、检测等操作而已。此处仅给出读写文件的简单演示代码。访问创建WinForm项目,在窗体上放置一个RichTextBox和两个Button上述示例使用File类的两个方法可以完成简单文本文件的读写操作。注意上述的test.txt文件应该保存为Unicode格式,否则会出现乱码。当然,也可以根据test.txt文件的真实编码来读取,只是此时应该使用ReadAllText()方法的另外一种重载方式。假如test.txt编码为gb2312,则读取的代码如图所示。相应地,写文件的时候也可以选用另外一种重载形式实现指定的编码存储文件。访问上述功能还可以通过ReadAllLines和WriteAllLines来实现实际的文本文件读写过程中,究竟是使用ReadAllText/WriteAllText还是ReadAllLines/WriteAllLines,可根据具体需求来选定(即操控的对象是文本还是数组)。路径02PART路径路径的操作处理是借助于Path类来完成的路径Path类的常用属性属性说明PathSeparator表示当多个路径字符串连接在一起时,用于分割每个文件或目录路径的字符;通常,当为搜索指定了多个路径时,使用该属性;Windows使用的默认字符为分号(;)InvalidPathChars表示一个数组,它包含不能用于路径字符串的字符DirectorySeparatorChar表示用于分隔路径字符串的目录段的字符;Windows使用的默认字符为反斜杠(\)VolumeSeparatorChar表示用于将驱动器盘符与字符串路径的其余部分进行分隔的字符;Windows使用的默认字符为冒号(:)路径路径Path类的常用方法方法说明GetDirectoryName()从包括驱动器盘符或文件名的路径中检索目录段GetExtension()获取某个指定文件路径中的文件的扩展名。例如,可以使用该方法得到要检索的文件的类型,从而可以使用正确的应用程序将其打开GetFileName()获取某个指定文件路径中的文件名,包括扩展名GetFullPath()获取指定文件路径的绝对路径,包括驱动器盘符和目录段。如果仅向本方法传递文件名,则将在返回的文件名之前加上当前目录的驱动器盘符和目录段GetRandomFileName()获取一个强加密的随机名称,可把它用于目录或文件的命名GetTempPath()获取本地操作系统用于存储临时文件的目录路径示例路径Stream类03PARTStream类支持在同一个流中既可以进行同步读写,也可以进行异步读写。该类是一个抽象类,它提供了BeginRead()、BeginWrite()、EndRead()、EndWrite()、Read()、Write()、Seek()等成员方法,协同完成对流的读写操作文件处理流Stream类Stream类读写操作由于上述方法都是虚方法,故自己设计Stream类的派生类时,应该重载这些方法,并同时设计它们同步和异步的执行代码。BeginRead()、EndRead()、BeginWrite()和EndWrite()方法默认提供了异步读写操作方式。Stream类还提供了ReadByte()和WriteByte()方法用于一次读写一个字节。它们在默认情况下实际上是调用了Read()和Write()方法的同步操作,异步读写BeginRead()EndRead()BeginWrite()EndWrite()同步读写Read()Write()概念FileStream类可以完成文件的读写操作,它是一个比较“底层”的流类,故可由BinaryReader、StreamReader等进行“包装”后,再完成对文件的操作CanRead判断是否可读Length确定长度CanSeek是否可以直接访问流中的某个位置Position确定位置CanWrite判断是否可写Stream类FileStream常用属性概念FileStream类可以完成文件的读写操作,它是一个比较“底层”的流类,故可由BinaryReader、StreamReader等进行“包装”后,再完成对文件的操作CanRead判断是否可读Length确定长度CanSeek是否可以直接访问流中的某个位置Position确定位置CanWrite判断是否可写Stream类FileStream常用属性使用File类如File.Create(fileName)、File.OpenRead(fileName)、File.Open()和File.OpenWrite()使用FileInfo其方法同File类自身构造函数FileStream的构造函数Stream类FileStream对象获取的常用方法Stream类FileMode、FileAccess和FileShare枚举值枚举意义典型取值FileMode定义如何打开文件Open:打开现有文件,不存在则引发异常OpenOrCreate:打开现有文件,不存在则创建Append:将新数据写到现有文件末尾Create:创建文件,若已存在则删除文件内容CreateNew:创建文件,若已存在则引发异常Truncate:打开现有文件并删除其内容(不会删除文件本身),文件指针置于0,不存在则引发异常FileAccess定义对文件进行访问时允许的操作Read:流可以对文件进行读操作Write:流可以对文件进行写操作ReadWrite:流可以对文件进行读写操作FileShare定义在文件共享时的选项None:除当前流,其他流不能对文件进行操作Read:其他流可以对文件进行读操作Write:其他流可以对文件进行写操作ReadWrite:其他流可以对文件进行读写操作Stream类FileStream常用方法方法说明Close()关闭操作Read()读入操作ReadByte()一次读一个字节Write()写入操作WriteByte()一次写一个字节示例Stream类FileStream的写操作。FileStream用于写操作时其作用在于把byteArray字节数组中的数据写入fs流,其中fs为FileStream的实例参数说明参数说明参数1数据源头,即为写操作提供数据的字节数组参数2从byteArray中的第startIndex个开始写,此前的0,1,…,startIndex-1都不会写入。如果参数2的值大于byteArray字节数组的长度,则引发异常参数3代表写入多少个字节。如果参数3的值大于byteArray字节数组的长度,则引发异常Write()方法的原理Stream类示例Stream类上面示例中输出文件的内容已经在注释当中。以“fs.Write(info,5,4);”为例,从第5个索引位置开始写,即从6开始(1的索引为0),写4个字节,故输出为6789。从这里可以看出,FileStream可以以字节数组的方式操作数据,故很灵活,功能强大。示例Stream类对代码进行如下的修改替换代码在上步的替换完成后示例Stream类FileStream的读操作其作用是:将fs流中的数据读到byteArray中,其中,fs为FileStream的实例。该方法执行完毕,返回一个int,代表真实读取的字节数,因为待读取的数据有可能不足一次读取的最大量n,当待读取字节数据小于n时,此时number<n,否则number=n。由于每次都将从fs流当中读取n字节的数据存储到byteArray中,因此,n的值应该不大于byteArray的Length值,否则将引发异常。虽然n值可以取小于byteArray的Length值,但是一般习惯保持两个值相等。当n值小于byteArray的Length值时,不会引发异常,并且也基本可以正常完成读取,但是在每次读取的内容后面都会有若干个“\0”,当作为字符串显示时,会显示为空格。Stream类参数说明参数说明参数1读取的数据的临时存放区,读取流的存储缓冲参数2把流fs中读取的数据从byteArray的第writePos个位置写入byteArray中参数3每次从fs中读取的字节数,但是不一定能读到这么多字节,有可能实际读取的字节数小于该参数,具体读取量由其返回值number确定Read()方法如图所示示例Stream类Stream类StreamReader成员说明Close()关闭StreamReader的对象和相应的流,并且释放与其对象相关的任何系统资源Peek()返回下一个可用的字符但不使用它Read()从流中读取下一个字符ReadLine()从当前流读取一行字符,并且返回数据为字符串Seek()允许在文件内移动读/写位置到任何地方StreamReader的常用方法Stream类StreamWriterStreamWriter的常用方法成员说明Close()关闭当前StreamWriter的对象和相应的流Flush()清除当前writer的所有缓冲,导致任何缓冲的数据被写入相应的流Write()写入流WriteLine()写入重载参数指定的某些数据,后跟行结束符示例写数据Stream类示例文件读取BinaryReaderBinaryWriterFileStream比较“底层”,功能强大,但操作复杂。为了方便读写,需要使用其它数据类型来完成与字节流的转换。BinaryReader和BinaryWriter用于按二进制模式读写文件。它们提供的一些读
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家装培训知识
- 围手术期的护理
- 桌花婚礼中的
- 小学一年级数学两位数加减一位数水平自测练习题大全附答案
- 现代殡葬技术与管理专业群课程主题互联网技术与素养
- 南瓜小房子阅读活动
- 医院新上岗人员岗前培训
- 《纺织工艺与设备上》课件
- 实验室设计规划
- 病案归档制度
- DZ/T 0462.3-2023 矿产资源“三率”指标要求 第3部分:铁、锰、铬、钒、钛(正式版)
- 信息技术与高中英语教学融合的途径
- 组织行为学(山东联盟-青岛理工大学)智慧树知到期末考试答案2024年
- 复习一元一次方程省公开课金奖全国赛课一等奖微课获奖课件
- 《电力建设施工技术规范 第2部分:锅炉机组》DLT 5190.2
- MOOC 管理咨询-暨南大学 中国大学慕课答案
- 供水管网抢修管理课件
- 25道医院重症医学科医生岗位高频面试问题附考察点及参考回答
- 施工日志及楼工程施工日志
- 改变世界的化学智慧树知到期末考试答案2024年
- 形容词比较级练习题
评论
0/150
提交评论