重点介绍windows应用程序对文件读写所涉及的System.IO命名空间和File、FileInfo、FileStream、BinaryReader、BinaryWriter、BufferedStream等类,以及常用的方法、参数、属性、事件、枚举等。
表 System.IO 命名空间常用的类
类 |
说明 |
提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。 | |
提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。无法继承此类。 | |
FileStream |
公开以文件为主的 Stream,既支持同步读写操作,也支持异步读写操作。 |
BinaryReader |
用特定的编码将基元数据类型读作二进制值。 |
BinaryWriter |
以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。 |
BufferedStream |
给另一流上的读写操作添加一个缓冲层。无法继承此类。 |
Directory |
公开用于创建、移动和枚举通过目录和子目录的静态方法。无法继承此类。 |
DirectoryInfo |
公开用于创建、移动和枚举目录和子目录的实例方法。无法继承此类。 |
Path |
对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。 |
StreamReader |
实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。 |
StreamWriter |
实现一个 TextWriter,使其以一种特定的编码向流中写入字符。 |
FileSysWatcher |
侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。 |
File类的常用方法
方法 |
说明 |
Move |
将指定文件移到新位置,并提供指定新文件名的选项。 |
Delete |
删除指定的文件。如果指定的文件不存在,则不引发异常。 |
Copy |
已重载。 将现有文件复制到新文件。 |
CreateText |
创建或打开一个文件用于写入 UTF-8 编码的文本。 |
OpenText |
打开现有 UTF-8 编码文本文件以进行读取。 |
Open |
已重载。 打开指定路径上的 FileStream。 |
了解File类的一些主要方法
方法 |
说明 |
Move |
将指定文件移到新位置,并提供指定新文件名的选项。 |
Delete |
删除指定的文件。如果指定的文件不存在,则不引发异常。 |
Copy |
已重载。 将现有文件复制到新文件。 |
CreateText |
创建或打开一个文件用于写入 UTF-8 编码的文本。 |
OpenText |
打开现有 UTF-8 编码文本文件以进行读取。 |
Open |
已重载。 打开指定路径上的 FileStream。 |
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
if (!File.Exists(path))
{
// 创建文件以便写入内容。
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
// 打开文件从里面读数据。
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
try
{
string path2 = path + "temp";
// 确认将要拷贝成的文件是否已经有同名的文件存在。
File.Delete(path2);
// 拷贝文件。
File.Copy(path, path2);
Console.WriteLine("{0} was copied to {1}.", path, path2);
// 删除新生成的文件。
File.Delete(path2);
Console.WriteLine("{0} was successfully deleted.", path2);
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
Fileinfo类的常用方法
属性 |
说明 |
获取或设置当前 FileSystemInfo 的 FileAttributes。(从 FileSystemInfo 继承。) | |
获取或设置当前 FileSystemInfo 对象的创建时间。(从 FileSystemInfo 继承。) | |
获取父目录的实例。 | |
获取表示目录的完整路径的字符串。 | |
已重写。获取指示文件是否存在的值。 | |
获取表示文件扩展名部分的字符串。(从 FileSystemInfo 继承。) |
下面的示例演示了 FileInfo类的一些主要属性。
using System;
using System.IO;
class Test
{
public static void Main()
{
string fileName = "C:\\autoexec.bat";
FileInfo fileInfo = new FileInfo(fileName);
if (!fileInfo.Exists)
{
return;
}
Console.WriteLine("{0} has a directoryName of {1}",fileName,fileInfo.DirectoryName);
/* 下面是代码的处理结果,
* 实际的结果因机器不同:
*
* C:\autoexec.bat has a directoryName of C:\
*/
}
}