这两天看了不少关于System.IO名称空间的资料,也就是.NET中对文件操作部分, 也做了一些小例来验证(或者说是加深学习印象吧,呵呵), 也搞明白System.IO里为什么更多的使用FileInfo (DirectoryInfo) 而不使用File ( Directory)这两对貌似双胞的两对兄弟,其功能上都是对文件进行一些常用操作(如打开,修改,删除等等),在Google上搜了一下相关资料,发现了一段能很好地说明以上问题的文字描述,其内容如下:
如果用户正试图对文件进行几种操作,可以使用FileInfo类。FileInfo类不包含静态的方法;因此,该类具有不同的用法。使用FileInfo类而不使用File类的原因在于,当创建一个FileInfo类,系统在第一次使用文件的时候要进行安全检查,而File类却在每次使用该方法的时候对文件进行一次安全检查。这是因为File类只有静态的方法,该方法无法确知对同一文件的多次访问。FileInfo类包含File类所有的功能,并且更多。但是因为FileInfo类的应用范围为一个指定的文件,因此在语法上略有不同。(相信DirectoryInfo也是同理)
上面一段文字对对问题说明得也比较透彻了.
File所提供的是一种静态引用的方法,可直接通过”类+方法”方式使用
如 File.Delete(文件路径) 删除文件
FileInfo则提供的是一种实例化的使用方法,使用时必须先进行实例化
如 FileInfo fi = new FileInfo(文件路径);
String name = fi.FullName; 取得文件完整目录
String Szie = fi.Length; 取得文件大小
fi.Delete(); 删除文件
下面的表格是System.IO命名空间中最重要的一些类,对文件的大部份基本操作就是通过运用这些类来完成的。
|
类名 |
功能和用途 |
| BinaryReader、BinaryWriter | 读写二进制数据 |
| Directory、File、DirectoryInfo以及FileInfo | 创建、删除并移动目录和文件,通过属性获取特定目录和文件的相关信息 |
| FileStream | 以随机方式访问文件 |
| MemoryStream | 访问存储在内存中的数据 |
| StreamReader 、StreamWriter | 读写文本数据信息 |
| StringReader、StringWriter | 运用字符串缓冲读写文本数据信息 |
DirectoryInfo类和FileInfo类的基类都是FileSystemInfo类,这个FileSystemInfo类是一个抽象类,也就是说你不可以实例化该类,只能通过继承产生其子类并实例化其子类。從而运用由该类定义的各种属性來對文件進行各种操作,下面的表格显示了该类已经定义的各种属性。
常用属性表2
|
属性 |
功能和用途 |
| Attributes | 返回和文件相关的属性值,运用了FileAttributes枚举类型值 |
| CreationTime | 返回文件的创建时间 |
| Exists | 检查文件是否存在于给定的目录中 |
| Extension | 返回文件的扩展名 |
| LastAccessTime | 返回文件的上次访问时间 |
| FullName | 返回文件的绝对路径 |
| LastWriteTime | 返回文件的上次写操作时间 |
| Name | 返回给定文件的文件名 |
| Delete() | 删除一个文件的方法,请务必谨慎地运用该方法 |
浙公网安备 33010602011771号