C#文件操作(一)

一、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"));  //判断文件夹是否存在

你可能感兴趣的:(C#宝典)