c# 中的文件处理

30
C# 中中中中中中

Upload: darryl-mack

Post on 30-Dec-2015

41 views

Category:

Documents


6 download

DESCRIPTION

C# 中的文件处理. 目标. 讨论 System.IO 命名空间中的 各种类 讨论 C# 中的各种流处理 列出用来进行文件输入/输出的各种方法和属性 练习使用 C# 进行文件处理和其他流输入处理. IO 命名空间和其中的类. IO 命名空间包含便于在数据流和文件中读取和写入数据的类 IO 命名空间中用于处理文件的类. System.IO 命名空间. 另存为 .xls 文件. 另存为 .bmp 文件. 另存为 .txt 文件. 以字节形式向磁盘写数据 通常称为字节流。存储在磁盘上的字节集合称为文件. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: C# 中的文件处理

C#中的文件处理

Page 2: C# 中的文件处理

目标

讨论 System.IO 命名空间中的各种类 讨论 C# 中的各种流处理 列出用来进行文件输入 / 输出的各种方法和属性 练习使用 C# 进行文件处理和其他流输入处理

Page 3: C# 中的文件处理

IO 命名空间和其中的类

IO 命名空间包含便于在数据流和文件中读取和写入数据的类

IO 命名空间中用于处理文件的类

BinaryReader TextWriter

BinaryWriter Directory

Stream File

TextReader FileSystemInfo

Page 4: C# 中的文件处理

System.IO 命名空间

另存为 .xls 文件

另存为 .xls 文件

另存为 .bmp

文件

另存为 .bmp

文件

另存为 .txt 文件

另存为 .txt 文件

以字节形式向磁盘写数据通常称为字节流。存储在磁盘上的字节集合称为文件

以字节形式向磁盘写数据通常称为字节流。存储在磁盘上的字节集合称为文件

Page 5: C# 中的文件处理

BinaryReader 和 BinaryWriter

• 它们都派生自 System.Object 类 这些类用于设置二进制数据的格式 可以从任何 C# 变量中读取数据并写入指定的流中 构造 BinaryReader 和 BinaryWriter 对象的方法是将Stream 对象作为参数传递给它的构造函数,然后就可以使用 BinaryReader 对象的 ReadXX 方法和BinaryWriter 对象的 Write 方法来读写各种类型的数据,如:

FileStream objFS = new FileStream(Filename, FileMode.Create);

BinaryWriter objBW = new BinaryWriter(filestream);

Page 6: C# 中的文件处理

二进制文件读写对象

Close()

Read()

ReadDecimal()

ReadByte()

ReadInt16()

ReadInt32()

ReadString()

Close()

Flush()

Write()

BinaryReader BinaryWriter

Page 7: C# 中的文件处理

Stream 类

是派生出各种类的抽象类 其中的一些派生类包括

– MemoryStream

– BufferedStream

– FileStream

– NetworkStream

– CryptoStream

Page 8: C# 中的文件处理

读写内存流

抽象类抽象类

MemoryStream BufferedStream

1. 对内存而不是对磁盘进行数据读写2. 减少了对临时缓冲区和文件的需要 1. 对内存而不是对磁盘进行数据读写2. 减少了对临时缓冲区和文件的需要

1. 对缓冲区进行数据读写2. 允许操作系统创建自己的缓冲区3. 输入 / 输出效率高且速度更快4. 在网络通讯的时候经常会使用到

1. 对缓冲区进行数据读写2. 允许操作系统创建自己的缓冲区3. 输入 / 输出效率高且速度更快4. 在网络通讯的时候经常会使用到

Stream 类Stream 类

Page 9: C# 中的文件处理

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)

Page 10: C# 中的文件处理

BufferedStream 类 2-1

• 用于在缓冲区中读取和写入 它有两个重载的构造函数 语法

public BufferedStream(Stream StName);

public BufferedStream(Stream StName, int bsize);

默认缓冲区大小为 4096默认缓冲区大小为 4096

缓冲区大小缓冲区大小

Page 11: C# 中的文件处理

BufferedStream 类 2-2

输出:

Page 12: C# 中的文件处理

读写文本文件 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 类

Page 13: C# 中的文件处理

FileStream 类

• 用于对文件执行读写操作 Read( ) 和 Write( ) 方法用于同步读写操作• BeginRead( ) 和 BeginWrite( ) 方法用于异步读写操

作• FileStream 类中的默认模式是同步读写操作

Page 14: C# 中的文件处理

读写文本文件 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 类型

Page 15: C# 中的文件处理

与 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);

Page 16: C# 中的文件处理

FileStream 类示例

创建了 FileStream 类的一个实例,以构造具有用户指定的名称的文件

Page 17: C# 中的文件处理

NetworkStream 类

• 用于通过网络发送和接收数据• 位于 System.Net.Sockets 命名空间中• Read( ) 、 ReadBytes( ) 、 Write( ) 和 WriteBytes( ) 方法用于

通过网络在流和缓冲区中进行读写操作

Page 18: C# 中的文件处理

CryptoStream 类 2-1

用于链接数据流与加密对象,以便进行数据加密• 位于 System.Security.Cryptography 命名空间中

Page 19: C# 中的文件处理

CryptoStream 类 2-2

输出示例-

该文件中的数据已经被加密。每次执行该程序并打开文件 Test1.cs 时,其中的数据都以不同的形式加密。

Page 20: C# 中的文件处理

Directory 和 File 类

• Directory 类包含可用于处理目录和子目录的静态方法

该类的静态方法可以在没有目录实例的情况下调用

File 类包含可用于处理文件的静态方法 它还用于创建 FileStream 类

Page 21: C# 中的文件处理

File 类的方法

方法

Copy(string SourceFilePath, string DestinationFilePath)

Create(string FilePath)

Delete(string FilePath)

Exists(string FilePath)

Move(string SourceFilePath, string DestinationFilePath)

Page 22: C# 中的文件处理

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 中

Page 23: C# 中的文件处理

FileSystemInfo 类

• 它是派生出 FileInfo 和 DirectoryInfo 类的抽象类• DirectoryInfo 类包含可用于处理目录和子目录的方

法 FileInfo 类包含可用于处理文件的方法• DirectoryInfo 类公开实例方法• DirectoryInfo 类的方法仅可由 DirectoryInfo 类的实

例调用

Page 24: C# 中的文件处理

FileInfo 类的属性和方法

属性DirectoryNameExtension

方法CopyTo(string destinationfile)

Create( )Delete( )

OpenWrite( )

OpenRead( )

Page 25: C# 中的文件处理

DirectoryInfo 类的属性和方法

属性FullName

Parent

Root

方法Create( )

CreateSubdirectory(string directorypath)

MoveTo(string destinationpath)

Page 26: C# 中的文件处理

TextReader 类

是 StreamReader 和 StringReader 类的抽象基类• 这些类可以用来读取一串有序的字符• StreamReader 从字节流中读取字符并将它转换为

指定的编码 StringReader 类用于从输入字符串中读取数据

Page 27: C# 中的文件处理

StreamReader 类的方法

方法

Read( )

ReadLine( )

ReadToEnd( )

示例

Page 28: C# 中的文件处理

TextWriter 类

• 是可用于写入有序字符的类的抽象基类• StreamWriter 和 StringWriter 类是 TextWriter 类的两

个派生类 StreamWriter 以指定的编码方式向流中写入字符 StringWriter 类用于向字符串中写入数据

Page 29: C# 中的文件处理

StreamWriter 类

StreamWriter 以指定的编码方式向流中写入字符 示例

Page 30: C# 中的文件处理

总结

IO 命名空间包含便于在数据流和文件中读取和写入数据的类。 BinaryReader 和 BinaryWriter 类派生自 System.Object 。 Stream 类是派生出 FileStream 和 MemoryStream 等类的抽象类。 FileSystemInfo 类是派生出 FileInfo 和 DirectoryInfo 类的抽象类。 TextReader 是 StreamReader 和 StringReader 类的抽象基类。