一、System.IO
任何程序中都离不开文件的读写与存储。C#中的文件操作基本上集中在System.IO、System.Text;两个命名空间内。
System.IO命名空间内常用到的类如下:
1、Directory //文件夹类(静态),用于创建、移动、枚举通过目录和子目录里的静态方法。
2、DirectoryInfo //文件夹类(实例),用于创建、移动、枚举通过目录和子目录里的实例方法,
3、DriveInfo //提供对有关驱动器的信息访问
4、File //文件类(静态),用于创建、复制、删除、移动和打开文件的静态方法,并协助创建
//Filestream
5、FileInfo //文件类(实例),用于创建、复制、删除、移动和打开文件的静态方法,并协助创建
//Filestream
6、FileStream //以文件为主的Stream,即支持同步读写,也支持异步读写操作
7、MemoryStream //创建其支持存储区为内存的流
8、Stream //提供字节序列的一般视图
9、StreamReader //实现一个TextReader,使其以一种特定的编码从字节流中读取字符
10、StreamWriter //实现一个TextWriter,使其以一种特定的编码向六种写入字符
11、StringReader //实现从字符串进行读取的TextReader
12、StringWriter //实现一个用于将信息写入字符串的TextWriter。该信息存储在基础StringBuilder中
13、TextReader //表示可读取的连续字符系列的读取器
14、TextWriter //表示可以编写一个有序字符系列的编写器。该类为抽象类
15、BinaryReader //用特定的编码将基元数据类型读取做二进制的值
16、BinaryWriter //用特定的编码将基元数据类型写入二进制的值
System.IO命名空间的类大致可分为以下3组。
1、操作流的类 //含文件流、内存流、以及读写这些流的类
2、操作目录的类 //包括文件夹目录下创建、移动、删除等操作,以及对磁盘信息进行访问的类。
3、操作文件的类 //包括文件的创建、移动、删除、复制、获取文件信息等
System.IO命名控件中常用的类有以下几种:
FileStream、StreamReader、StreamWriter、BinaryReader、BinaryWriter、MemoryStream、File、FileInfo、Directory类、DirectoryInfo类等。
二、文件类File与FileInfo
File类与FileInfo类为FIleStream对象的创建和文件的创建、赋值、移动、删除、打开等提供了支持。使用这两个类对文件进行操作时必须具备相应的权限,否则将会产生异常。File类和FileInfo类都能完成对文件的操作,但FIleInfo类必须实例化。
下面列出File类常用成员及其说明
Copy //文件复制
Create //文件创建
Delete //文件删除,如果文件不存则会引发异常
Move //文件移动
Open //打开文件
1、Copy
(1) public static void Copy(string sourceFileName, string destFileName); //源文件路径、新文件路径
(2) public static void Copy(string sourceFileName, string destFileName, bool overwrite); //源文件路径、新文件路径、允许覆
盖同名文件
static void Copy_Move()
{
//File.Copy(@"C:/123.txt",@"C:/456.txt"); //如果456.txt文件不存在,则会拷贝。如果已存在则会报错
File.Copy(@"C:/123.txt",@"C:/456.txt",true); //第三个参数为是否允许覆盖现有的文件,为true会覆盖掉同名文件
}
2、Move
public static void Move(string sourceFileName, string destFileName); //源文件路径、目的文件路径
if (!File.Exists(@"D:/456.txt")) //判断文件是否存在
File.Move(@"C:/456.txt", @"D:/456.txt"); //移动之前必须确保没有重名的文件
else
Console.WriteLine("文件已存在,无法进行移动");
3、Delete
public static void Delete(string path); //欲删除的文件路径
File.Delete(@"D:/456.txt"); //删除D盘下的456.txt文件
4、Create
(1) public static FileStream Create(string path); //按照路径创建
(2) public static FileStream Create(string path, int bufferSize); //路径创建,并设置缓冲区大容量
(3) public static FileStream Create(string path, int bufferSize, FileOptions options); //路径创建、设置容量、指定文件流的操
作方式。
(4) public static FileStream Create(string path, int bufferSize, FileOptions options, FileSecurity fileSecurity); //路径创建、设定容量、访问权限
FileStream fs=File.Create(@"C:/123.barcode"); //创建的文件的后缀名可以为任何值。Create方法返回文件流FileStream
5、Open
(1) public static FileStream Open(string path, FileMode mode); //路径、打开模式
(2) public static FileStream Open(string path, FileMode mode, FileAccess access); //路径,打开模式、访问模式
(3) public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share); //路径、打开模式、访
问模式、共享
(4) public static FileStream OpenRead(string path); //路径。自动设置了访问模式为Read
(5) public static StreamReader OpenText(string path); //路径。
(6) public static FileStream OpenWrite(string path); //路径。自动设置了访问模式为write
static void Open()
{
FileStream fs= File.OpenRead(@"C:/123.txt");
StreamReader sr = new StreamReader(fs);
string s=sr.ReadToEnd();
Console.WriteLine("读取到的内容为:"+s);
fs.Close();
sr.Close();
}
三、文件夹类Directory和DirectoryInfo类
Directory与DirectoryInfo专门应对文件夹的操作上,与File和FileInfo一样,Directory里包含的是静态方法,DirectoryInfo为实例化方法。所以一般来说Directory使用的比较多。
常用的属性和方法如下:
Creation Time //目录创建的时间
LastAcessTime //上一次访问的时间
LastWriteTime //上一次修改目录的时间
Name //当前路径名
Parent //上一级父目录名
Root //根目录名
CreateDirectory //创建指定路径中的所有目录
Delete //删除指定的目录
Exists //确定路径是否存在
GetCurrentDirectory //获取当前工作目录
GetDirectories //获取指定目录下的文件夹
GetFiles //获取指定目录下的文件
Move //将文件或目录及其内容移动到新位置
SetCurrentDirectory //将应用程序的工作目录设置为指定的目录
DirectoryInfo myDirectory= Directory.CreateDirectory(@"C:文件夹创建测试"); //如果文件夹存在则会替换
Console.WriteLine(Directory.GetCurrentDirectory()); //获取当前项目文件夹,即当前运行的exe文件的文件夹
foreach (var item in Directory.GetDirectories(@"C:\"))
{
Console.WriteLine(item);
}
foreach (var item in Directory.GetFiles(@"C:\")) //获取文件夹下的所有文件
{
Console.WriteLine(item);
}
Console.WriteLine(Directory.Exists(@"C:\Program Files")); //判断文件夹是否存在