c# 中的文件处理
DESCRIPTION
C# 中的文件处理. 目标. 讨论 System.IO 命名空间中的 各种类 讨论 C# 中的各种流处理 列出用来进行文件输入/输出的各种方法和属性 练习使用 C# 进行文件处理和其他流输入处理. IO 命名空间和其中的类. IO 命名空间包含便于在数据流和文件中读取和写入数据的类 IO 命名空间中用于处理文件的类. System.IO 命名空间. 另存为 .xls 文件. 另存为 .bmp 文件. 另存为 .txt 文件. 以字节形式向磁盘写数据 通常称为字节流。存储在磁盘上的字节集合称为文件. - PowerPoint PPT PresentationTRANSCRIPT
C#中的文件处理
目标
讨论 System.IO 命名空间中的各种类 讨论 C# 中的各种流处理 列出用来进行文件输入 / 输出的各种方法和属性 练习使用 C# 进行文件处理和其他流输入处理
IO 命名空间和其中的类
IO 命名空间包含便于在数据流和文件中读取和写入数据的类
IO 命名空间中用于处理文件的类
BinaryReader TextWriter
BinaryWriter Directory
Stream File
TextReader FileSystemInfo
System.IO 命名空间
另存为 .xls 文件
另存为 .xls 文件
另存为 .bmp
文件
另存为 .bmp
文件
另存为 .txt 文件
另存为 .txt 文件
以字节形式向磁盘写数据通常称为字节流。存储在磁盘上的字节集合称为文件
以字节形式向磁盘写数据通常称为字节流。存储在磁盘上的字节集合称为文件
BinaryReader 和 BinaryWriter
• 它们都派生自 System.Object 类 这些类用于设置二进制数据的格式 可以从任何 C# 变量中读取数据并写入指定的流中 构造 BinaryReader 和 BinaryWriter 对象的方法是将Stream 对象作为参数传递给它的构造函数,然后就可以使用 BinaryReader 对象的 ReadXX 方法和BinaryWriter 对象的 Write 方法来读写各种类型的数据,如:
FileStream objFS = new FileStream(Filename, FileMode.Create);
BinaryWriter objBW = new BinaryWriter(filestream);
二进制文件读写对象
Close()
Read()
ReadDecimal()
ReadByte()
ReadInt16()
ReadInt32()
ReadString()
Close()
Flush()
Write()
BinaryReader BinaryWriter
Stream 类
是派生出各种类的抽象类 其中的一些派生类包括
– MemoryStream
– BufferedStream
– FileStream
– NetworkStream
– CryptoStream
读写内存流
抽象类抽象类
MemoryStream BufferedStream
1. 对内存而不是对磁盘进行数据读写2. 减少了对临时缓冲区和文件的需要 1. 对内存而不是对磁盘进行数据读写2. 减少了对临时缓冲区和文件的需要
1. 对缓冲区进行数据读写2. 允许操作系统创建自己的缓冲区3. 输入 / 输出效率高且速度更快4. 在网络通讯的时候经常会使用到
1. 对缓冲区进行数据读写2. 允许操作系统创建自己的缓冲区3. 输入 / 输出效率高且速度更快4. 在网络通讯的时候经常会使用到
Stream 类Stream 类
MemoryStream 类
用于从内存中读取数据和将数据写入内存中 以下是 MemoryStream 的一些方法
方法int Read(byte[] buffer, int offset, int count)
int ReadByte()
void Write(byte[] buffer, int offset, int count)
void WriteByte(byte value)
void WriteTo(Stream stream)
BufferedStream 类 2-1
• 用于在缓冲区中读取和写入 它有两个重载的构造函数 语法
public BufferedStream(Stream StName);
public BufferedStream(Stream StName, int bsize);
默认缓冲区大小为 4096默认缓冲区大小为 4096
缓冲区大小缓冲区大小
BufferedStream 类 2-2
输出:
读写文本文件 3-1
System.IO 命名空间System.IO 命名空间
继承类
静态方法 CreateText(string FilePath)
OpenText(string FilePath)
Open(string FilePath, FileMode)
Create(string FilePath)
OpenRead(string FilePath)
AppendText(string FilePath)
FileStream 类FileStream 类
File 类File 类
FileStream 类
• 用于对文件执行读写操作 Read( ) 和 Write( ) 方法用于同步读写操作• BeginRead( ) 和 BeginWrite( ) 方法用于异步读写操
作• FileStream 类中的默认模式是同步读写操作
读写文本文件 3-2
FileStream 构造函数
FileStream 已重写构造函数FileStream(string FilePath, FileMode)
FileStream(string FilePath, FileMode, FileAccess)
FileStream(string FilePath, FileMode, FileAccess, FileShare) 在构造函数中使用的
FileMode 、 FileAccess 和 FileShare 参数都是
enum 类型
在构造函数中使用的 FileMode 、 FileAccess
和 FileShare 参数都是enum 类型
与 FileStream 类一起使用的枚举数
FileMode 枚举数 Append
Create
CreateNew
Open
OpenOrCreate
Truncate
• FileAccess 枚举数– Read– Write– ReadWrite
• FileShare 枚举数– None– Read– Write– ReadWrite
FileStream fstream = new FileStream("Test.cs", FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None);
FileStream 类示例
创建了 FileStream 类的一个实例,以构造具有用户指定的名称的文件
NetworkStream 类
• 用于通过网络发送和接收数据• 位于 System.Net.Sockets 命名空间中• Read( ) 、 ReadBytes( ) 、 Write( ) 和 WriteBytes( ) 方法用于
通过网络在流和缓冲区中进行读写操作
CryptoStream 类 2-1
用于链接数据流与加密对象,以便进行数据加密• 位于 System.Security.Cryptography 命名空间中
CryptoStream 类 2-2
输出示例-
该文件中的数据已经被加密。每次执行该程序并打开文件 Test1.cs 时,其中的数据都以不同的形式加密。
Directory 和 File 类
• Directory 类包含可用于处理目录和子目录的静态方法
该类的静态方法可以在没有目录实例的情况下调用
File 类包含可用于处理文件的静态方法 它还用于创建 FileStream 类
File 类的方法
方法
Copy(string SourceFilePath, string DestinationFilePath)
Create(string FilePath)
Delete(string FilePath)
Exists(string FilePath)
Move(string SourceFilePath, string DestinationFilePath)
Directory 和 File 类
示例
using System ;using System.IO;class Test{ static void Main(string[] args) { Directory.CreateDirectory("C#");
File.Copy("Test1.cs","C#\\Test2.cs");Console.WriteLine(" 已复制文件内
容 "); }}
使用 Directory 类在当前路径下创建了一个名为“C#” 的目录,使用 File 类将文件 Test1.cs 的内容复制到文件 Test2.cs 中
FileSystemInfo 类
• 它是派生出 FileInfo 和 DirectoryInfo 类的抽象类• DirectoryInfo 类包含可用于处理目录和子目录的方
法 FileInfo 类包含可用于处理文件的方法• DirectoryInfo 类公开实例方法• DirectoryInfo 类的方法仅可由 DirectoryInfo 类的实
例调用
FileInfo 类的属性和方法
属性DirectoryNameExtension
方法CopyTo(string destinationfile)
Create( )Delete( )
OpenWrite( )
OpenRead( )
DirectoryInfo 类的属性和方法
属性FullName
Parent
Root
方法Create( )
CreateSubdirectory(string directorypath)
MoveTo(string destinationpath)
TextReader 类
是 StreamReader 和 StringReader 类的抽象基类• 这些类可以用来读取一串有序的字符• StreamReader 从字节流中读取字符并将它转换为
指定的编码 StringReader 类用于从输入字符串中读取数据
StreamReader 类的方法
方法
Read( )
ReadLine( )
ReadToEnd( )
示例
TextWriter 类
• 是可用于写入有序字符的类的抽象基类• StreamWriter 和 StringWriter 类是 TextWriter 类的两
个派生类 StreamWriter 以指定的编码方式向流中写入字符 StringWriter 类用于向字符串中写入数据
StreamWriter 类
StreamWriter 以指定的编码方式向流中写入字符 示例
总结
IO 命名空间包含便于在数据流和文件中读取和写入数据的类。 BinaryReader 和 BinaryWriter 类派生自 System.Object 。 Stream 类是派生出 FileStream 和 MemoryStream 等类的抽象类。 FileSystemInfo 类是派生出 FileInfo 和 DirectoryInfo 类的抽象类。 TextReader 是 StreamReader 和 StringReader 类的抽象基类。