580 likes | 723 Views
第5章 读取和写入文件. .NET Framework 2.0 程序 设计. 第 1 章 : .NET Framework 2.0 简介 第 2 章:公共语言运行库和类型 第 3 章:托管代码的编译和执行 第 4 章:委托和事件 第 5 章: 读取和写入文件 第 6 章:集合和泛型 第 7 章:数据的序列化 第 8 章: GDI+ 第 9 章 : 在 .NET Framework 2.0 中实现加密. 第 10 章: COM 组件与 .NET Framework 程序集之间的交互操作
E N D
.NET Framework 2.0 程序设计 第 1 章: .NET Framework 2.0简介 第 2 章:公共语言运行库和类型 第 3 章:托管代码的编译和执行 第 4 章:委托和事件 第 5 章:读取和写入文件 第 6 章:集合和泛型 第 7 章:数据的序列化 第 8 章:GDI+ 第 9 章:在 .NET Framework 2.0中实现加密 第 10 章: COM 组件与.NET Framework程序集之间的交互操作 第 11 章:使用类型元数据 第 12 章:创建多线程应用程序和应用程序域 第 13 章:代码访问安全性 第 14 章:监视和调试应用程序 第 15 章:使用服务应用程序和电子邮件消息 第 16 章:创建全球化应用程序 第 17 章:配置和安装程序集
本章学习目标: 使用 Path、File、FileInfo、Directory、DirectoryInfo、DriveInfo 和 FileSystemWatcher 类管理文件系统 使用 Stream、FileStream、MemoryStream 和 BufferedStream 类使用字节流 使用 DeflateStream、GZipStream、IsolatedStorageFile 和 IsolatedStorageFileStream 类压缩并保护流信息 使用 TextReader、TextWriter、StreamReader、StreamWriter、StringReader、StringWriter、BinaryReader 和 BinaryWriter 类管理应用程序数据 使用 StringBuilder 类来高效地操作字符串 使用正则表达式类来使用正则表达式 目标
第5章 读取和写入文件 • 管理文件系统 • 使用字节流 • 压缩和保护流信息 • 管理应用程序数据 • 高效操作字符串 • 使用正则表达式 • 小结 • 实验 • 习题
使用 Path 类来访问文件路径 使用 File 和 FileInfo 类访问文件 (1) File 类 (2) FileInfo 类 使用 Directory 和 DirectoryInfo 类访问目录 (1) Directory 类 (2) DirectoryInfo 类 使用 DriveInfo 类访问驱动器 FileSystemWatcher 类 管理文件系统 5.1 管理文件系统 一般而言,应用程序都会有保存数据、检索数据的需求 。 代码示例C# 代码示例VB
. 使用 Path 类来访问文件路径 5.1.1使用 Path 类来访问文件路径 Path 类的属性和方法
. 使用 Path 类来访问文件路径(续) 5.1.1使用 Path 类来访问文件路径 续表:
. 使用 File 和 FileInfo 类访问文件 5.1.2使用 File 和 FileInfo 类访问文件 File 类中的可用方法
. 使用 File 和 FileInfo 类访问文件(续) 5.1.2使用 File 和 FileInfo 类访问文件 FileInfo 类的属性和方法
. 使用 Directory 和 DirectoryInfo 类访问目录 5.1.3使用 Directory 和DirectoryInfo 类访问目录 Directory 类中的可用方法
. 使用 Directory 和 DirectoryInfo 类访问目录(续) 5.1.3使用 Directory 和DirectoryInfo 类访问目录 DirectoryInfo 类的成员
. 使用 DriveInfo 类访问驱动器 5.1.4使用 DriveInfo 类访问驱动器 DriveInfo 类的成员
. 使用 DriveInfo 类访问驱动器(续) 5.1.4使用 DriveInfo 类访问驱动器 续表:
. ErrorEventHandler:System.IO 命名空间中的 ErrorEventHandler 委托,指示在发生错误时将要调用的方法。 RenamedEventHandler:重命名FileSystemWatcher 类的实例所监视的文件或目录时,将调用System.IO 命名空间中的 RenamedEventHandler 委托方法。 FileSystemWatcher 类 5.1.5 FileSystemWatcher 类 FileSystemWatcher 类的委托 代码示例C# 代码示例VB
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
. 使用 Stream 类管理字节流 使用 FileStream 类管理文件数据 使用 MemoryStream 类管理内存数据 使用 BufferedStream 类提高流性能 使用字节流 5.2 使用字节流 代码示例C# 代码示例VB
使用字节流 (续) 5.2 使用字节流 .NET Framework 提供了 Stream 类来管理字节流。Stream 类是一个抽象(MustInherit)类,它提供 .NET Framework 中所有流类的基本功能。 FileStream 类是从 Stream 类继承而来的实体类,它用于将数据以流的形式写入或读出文件。 MemoryStream 类是一个实体类。它从 Stream 类继承而来,用于在内存中写入、读出数据。 BufferedStream 类是从 Stream 类继承而来的实体类,它用于向另一种类型的流提供额外的内存缓冲区。
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
压缩和解压缩 (1)使用 DeflateStream 类压缩流信息 (2)使用 GZipStream 类压缩流信息 独立存储 使用独立存储类保护流信息 压缩和保护流信息 5.3 压缩和保护流信息 代码示例C# 代码示例VB
压缩和保护流信息(续) 5.3 压缩和保护流信息 压缩是使用较少的位对信息进行编码以减小文件大小的过程。 解压缩是使用压缩过程中创建的映射将压缩文件恢复成原始状态和大小的过程。
压缩和解压缩 5.3.1 压缩和解压缩 • 使用 DeflateStream 来压缩流信息 • Deflate Stream 类中提供了使用 Deflate 算法压缩和解压缩流的方法。Deflate 算法是无损文件压缩和解压缩的行业标准算法。无损文件压缩允许从压缩的数据重新构造确切数据。不能使用 DeflateStream 类来压缩大于 4 GB的文件。 • 使用 GZipStream类压缩流信息 • 要在压缩过程中检查错误或要与其他操作系统所用程序共享压缩数据,则要使用GZipStream类。GZipStream类包含使用 GZip数据格式进行压缩和解压缩文件的方法。使用GZipStream 格式压缩的文件以 gz扩展名保存。其他操作系统经常使用GZip 格式。该类不能用于解压缩大于4GB 的文件。
独立存储 5.3.2 独立存储 使用独立存储的优势
使用独立存储类保护流信息 5.3.3 使用独立存储类保护流信息 IsolatedStorageFileStream类的成员 代码示例C#
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
文本、流、字符串和二进制数据 管理文本数据和字符串 (1)TextReader 类 (2)TextWriter 类 管理字符串 使用BinaryReader 和BinaryWriter管理二进制数据 管理应用程序数据 5.4 管理应用程序数据 .NET Framework包含了为读/写特定类型的数据而进行优化的类 。 代码示例C#
文本、流、字符串和二进制数据 5.4.1 文本、流、字符串和二进制数据 文本、流、字符串和二进制数据
文本、流、字符串和二进制数据(续) 5.4.1 文本、流、字符串和二进制数据 续表:
管理文本数据和字符串 5.4.2 管理文本数据和字符串 .NET Framework.支持的字符编码类型:
. StringReader类可以从包含多行的字符串中提取每一行 StringReader 和 StringWriter 类都属于 System.IO 命名空间 StreamReader 和StreamWriter类继承自TextReader 和 TextWriter类 使用StreamReader.ReadToEnd方法可以读取整个流的内容 管理字符串 5.4.3 管理字符串 使用 StringReader 和 StringWriter 类可以读写字符串中的子字符串。 代码示例VB
. 管理二进制数据 5.4.4 使用BinaryReader 和BinaryWriter类管理二进制数据 使用 BinaryReader 和 BinaryWriter 类可以读/写二进制文件,它们将原始数据类型作为二进制值来读写 。 BinaryReader 和 BinaryWriter类的构造函数需要一个 Stream 类对象参数,以及一个可选的encoding对象参数。
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
字符串处理 应用程序可能检索用户名称和口令、创建一个显示消息、从文件中读取字符串或者在将字符串发送到其他进程或组件之前对其进行修改。处理和修改字符串的过程称为字符串处理。 使用StringBuilder类高效操作字符串 .NET Framework 提供的 StringBuilder 类用于更高效地处理字符串,而不是仅简单地进行字符串合并。 高效操作字符串 5.5 高效操作字符串 要学会高效的操作字符串,必须理解.NET Framework中字符串的工作原理。 代码示例C# 代码示例VB
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
正则表达式 使用正则表达式类来分析文本模式: (1)RegEx 类 (2)Capture 类 (3)CaptureCollection 类 (4)Group类 (5)GroupCollction类 (6)Match 类 (7)MatchCollection 类 使用正则表达式 5.6 使用正则表达式 正则表达式是描述或匹配一组字符的字符串。
正则表达式的概念 5.6.1 正则表达式的概念 正则表达式的各种组成部分:
正则表达式的概念(续) 5.6.1 正则表达式的概念 续表:
正则表达式的概念 (续) 5.6.1 正则表达式的概念 续表:
正则表达式的概念 (续) 5.6.1 正则表达式的概念 续表:
正则表达式的概念 (续) 5.6.1 正则表达式的概念 续表:
正则表达式的概念 (续) 5.6.1 正则表达式的概念 续表:
正则表达式的概念 (续) 5.6.1 正则表达式的概念 续表:
正则表达式的概念 (续) 5.6.1 正则表达式的概念 续表:
RegEx 类 该类表示一个包含正则表达式的字符串。 Capture 类 该类是 Match 类和 Group 类的基类。 CaptureCollection 类 该类表示与捕获组匹配的所有捕获。 Group类 该类继承自 Capture 类,且是 Match 类的父类。 GroupCollction类 该类表示 Match 类实例返回的所有组。 Match 类 该类表示 RegEx 类的对象的单个结果。 MatchCollection 类 该类是 Match 类的一个集合。 分析文本模式 5.6.2 使用正则表达式类来分析文本模式 代码示例C# 代码示例VB
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
小结 5.7 小结 本章主要介绍了管理文件系统的相关类。.NET Framework 2.0 提供了管理驱动器、目录和文件的类。此外,.NET Framework 还提供了对文件进行读操作和写操作的类,以及对文件进行压缩、解压缩以及按模式搜索的类。本章还介绍了如何高效处理字符串以及如何使用正则表达式。
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
实验 5.8实验 参照实验手册,并在教师指导下完成实验报告。
管理文件系统 使用字节流 压缩和保护流信息 管理应用程序数据 高效操作字符串 使用正则表达式 小结 实验 习题 第5章 读取和写入文件
习题 5.9 习题 1. 要开发一个存储用户文件的应用程序,用于在该路径下保这些文件的应用程序将与 Web 上的其他应用程序共享该路径。有时,必须在 Windows 以外的环境中显示路径,而且,有时还必须修改用于分隔目录段的字符。 应该使用以下哪个属性? 请选择一个最佳答案。 A.InvalidPathChars B.DirectorySeparator C.PathSeparator D.VolumeSeparator
习题(续) 5.9 习题 • 假设你的应用程序必须监视某个文件夹的Word文档的更新。你已经决定使用FileSystemWatcher类,下面哪些选项是需要的? • 请选择所有符合条件的答案。 • A.将 Filter 属性设置为 Microsoft Word 文档 • B.将 Filter 属性设置为 *.doc • C.将 NotifyFilter 属性设置为 NotifyFilters.LastWrite • D.将 NotifyFilter 属性设置为 NotifyFilters.LastAccess • E.为 Changed 事件分配一个事件处理程序 • F.为 Renamed 事件分配一个事件处理程序