1 DirectoryInfo 类介绍
DirectoryInfo 类在 .net 开发中主要用于创建、移动和枚举目录和子目录的实例方法,此类不能被继承。
从事 .net 软件开发的同事对 DirectoryInfo 类应该都很熟悉,在开发过程中如果你打算多次重用某个对象,建议你使用 DirectoryInfo 的实例方法,而不是 Directory 类的方法,因为 Directory 类是静态的,在使用它的方法时每次都需要安全检查,而 DirectoryInfo 类的方法则不需要安全检查。
2 DirectoryInfo 类属性
(1) Attributes:获取或设置当前文件或目录的特性 。
(2) CreationTime:获取或设置当前文件或目录的创建时间。
(3) CreationTimeUtc:获取或设置当前文件或目录的创建时间,其格式为协调世界时 (UTC)。
(4) Exists:获取指示目录是否存在的值。
(5) Extension:获取表示文件扩展名部分的字符串。
(6) FullName:获取目录或文件的完整目录。
.NET 4.5 版本 DirectoryInfo 新增属性
(7) LastAccessTime:获取或设置上次访问当前文件或目录的时间 。
(8) LastAccessTimeUtc:获取或设置上次访问当前文件或目录的时间,其格式为协调世界时 (UTC)。
(9) LastWriteTime:获取或设置上次写入当前文件或目录的时间。
(10) LastWriteTimeUtc:获取或设置上次写入当前文件或目录的时间,其格式为协调世界时 (UTC)。
3 DirectoryInfo 类方法
(1) Create():创建目录。
(2) Delete():如果此 DirectoryInfo 为空,则删除它。
(3) Create(DirectorySecurity):使用 DirectorySecurity 对象创建目录。
(4) CreateObjRef:创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。
(5) CreateSubdirectory(String):在指定路径中创建一个或多个子目录 。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。
(6) CreateSubdirectory(String, DirectorySecurity):使用指定的安全性在指定的路径上创建一个或多个子目录。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。
(7) Delete() 如果此 DirectoryInfo 为空,则删除它 。
4 实例
4.1 创建 “收藏” 文件夹
DirectoryInfo di = new DirectoryInfo("E:\newFolder\收藏");
di.Create();
4.2 创建 “我的收藏.txt” 文件
DirectoryInfo di = new DirectoryInfo("E:\newFolder\收藏\我的收藏.txt");
di.Create();
4.3 删除 “收藏” 文件夹
DirectoryInfo di = new DirectoryInfo("E:\newFolder\收藏");
di.Delete(true);
4.4 获取子目录和文件
DirectoryInfo di = new DirectoryInfo("E:\newFolder\收藏");
di.GetDirectories();
4.5 设置目录属性
DirectoryInfo di =new DirectoryInfo("E:\newFolder\收藏");
di.Atttributes=FileAttributes.ReadOnly|FileAttributes.Hidden; //只读、隐藏
4.6 移动目录或文件
File.Move("E:\newFolder\收藏\a.txt","E:\newFolder\爱好");
4.7 获取目录下的文件
Directory. GetFiles ("E:\newFolder\收藏");
4.8 判断目录是否存在
File.Exists("E:\newFolder\收藏");
4.9 复制目录或文件
File.Copy(source,target);
4.10 获取文件路径中的文件名
Path.GetFileName("E:\aa\bb\c.txt"); //结果:c.txt
4.11 获取文件路径中的文件名的父路径
Path.GetDirectoryName("E:\aa\bb\c.txt"); //结果:E:\aa\bb\
4.12 读取文件
public static byte[] FileRead(System.IO.FileInfo file, long start, int packagesize)
{
byte[] resutl = null;
long length = start + packagesize;
using (System.IO.FileStream stream = file.OpenRead())
{
if (length > stream.Length) //最后一部分不足packagesize
resutl = new byte[stream.Length - start];
else
resutl = new byte[packagesize];
stream.Seek(start, System.IO.SeekOrigin.Begin);
stream.Read(resutl, , resutl.Length);
}
return resutl;
}
4.13 写入文件
public static void FileWrite(System.IO.FileInfo file, long start, byte[] data)
{
using (System.IO.FileStream stream = file.OpenWrite())
{
stream.Seek(start, System.IO.SeekOrigin.Begin);
stream.Write(data, , data.Length);
stream.Flush();
stream.Close();
}
}