C#目录操作

前面我们介绍了 C# 中文件的读写操作,本节我们来看一下 C# 中有关目录的操作,C# 中允许您使用各种目录和文件相关的类来操作目录和文件,比如 DirectoryInfo 类和 FileInfo 类。

DirectoryInfo 类

DirectoryInfo 类派生自 FileSystemInfo 类,其中提供了各种用于创建、移动、浏览目录和子目录的方法。需要注意的是,该类不能被继承。

下表列出了 DirectoryInfo 类中一些常用的属性:

属性 描述
Attributes 获取当前文件或目录的属性
CreationTime 获取当前文件或目录的创建时间
Exists 获取一个表示目录是否存在的布尔值
Extension 获取表示文件存在的字符串
FullName 获取目录或文件的完整路径
LastAccessTime 获取当前文件或目录最后被访问的时间
Name 获取该 DirectoryInfo 实例的名称

下表列出了 DirectoryInfo 类中一些常用的方法:

方法 描述
public void Create() 创建一个目录
public DirectoryInfo CreateSubdirectory(string path) 在指定的路径上创建子目录,指定的路径可以是相对于 DirectoryInfo 类的实例的路径
public override void Delete() 如果为空的,则删除该 DirectoryInfo
public DirectoryInfo[] GetDirectories() 返回当前目录的子目录
public FileInfo[] GetFiles() 从当前目录返回文件列表

完整的方法以及属性介绍,请查阅 C# 官方文档

FileInfo 类

FileInfo 类派生自 FileSystemInfo 类,其中提供了用于创建、复制、删除、移动、打开文件的属性和方法。与 DirectoryInfo 类相同,FileInfo 类也不能被继承。

下表列出了 FileInfo 类中一些常用的属性:

属性 描述
Attributes 获取当前文件的属性
CreationTime 获取当前文件的创建时间
Directory 获取文件所属目录的一个实例
Exists 获取一个表示文件是否存在的布尔值
Extension 获取表示文件存在的字符串
FullName 获取文件的完整路径
LastAccessTime 获取当前文件最后被访问的时间
LastWriteTime 获取文件最后被写入的时间
Length 获取当前文件的大小,以字节为单位
Name 获取文件的名称

下表列出了 FileInfo 类中一些常用的方法:

方法 描述
public StreamWriter AppendText() 创建一个 StreamWriter,追加文本到由 FileInfo 的实例表示的文件中
public FileStream Create() 创建一个文件
public override void Delete() 永久删除一个文件
public void MoveTo(string destFileName) 移动一个指定的文件到一个新的位置,提供选项来指定新的文件名
public FileStream Open(FileMode mode) 以指定的模式打开一个文件
public FileStream Open(FileMode mode,FileAccess access) 以指定的模式,使用 read、write 或 read/write 访问,来打开一个文件
public FileStream Open(FileMode mode,FileAccess access,FileShare share) 以指定的模式,使用 read、write 或 read/write 访问,以及指定的分享选项,来打开一个文件
public FileStream OpenRead() 创建一个只读的 FileStream
public FileStream OpenWrite() 创建一个只写的 FileStream

完整的方法以及属性介绍,请查阅 C# 官方文档

【示例】使用 DirectoryInfo 类获取目录的信息。
using System;
using System.IO;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args) 
        {
            // 创建一个 DirectoryInfo 对象
            DirectoryInfo mydir = new DirectoryInfo(@"f:\code");

            // 获取目录中的文件以及它们的名称和大小
            FileInfo[] f = mydir.GetFiles();
            foreach (FileInfo file in f)
            {
                Console.WriteLine("文件名称:{0} 大小:{1}", file.Name, file.Length);
            }
            Console.ReadKey();
        }
    }
}
运行结果如下:

文件名称:demo.cs 大小:592
文件名称:demo.exe 大小:4096
文件名称:demo.txt 大小:54
文件名称:mydata 大小:30
文件名称:test.txt 大小:50