文件是一个由字节组成的有序的命名集合,它具有永久存储。在处理文件时,你将处理目录路径、磁盘存储、文件和目录名称。
文件和目录 System.IO 命名空间提供了一组用于执行“实用”文件和目录操作的类型,例如复制和移动、创建目录以及设置文件属性和权限。对于大多数功能,您可以在两个类中选择一个,一个提供静态方法,另一个提供实例方法:
另外,还有一个名为Path的静态类。这个类对于文件或是目录并没有什么;相反,他为文件名与目录路径提供了字符串处理的方法。Path同时辅助临时文件处理。
下面是一些常用的文件和目录类:
File - 提供用于创建、复制、删除、移动和打开文件的静态方法,并可帮助创建 FileStream 对象。
FileInfo - 提供用于创建、复制、删除、移动和打开文件的实例方法,并可帮助创建 FileStream 对象。
Directory - 提供用于创建、移动和枚举目录和子目录的静态方法。
DirectoryInfo - 提供用于创建、移动和枚举目录和子目录的实例方法。
Path - 提供用于以跨平台的方式处理目录字符串的方法和属性。
File类 File是一个静态类,其方法接受文件名。文件名可以相对于当前目录或是具有目录的绝对路径。该类所具有的方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 bool Exists (string path ) ; void Delete (string path ) ;void Copy (string sourceFileName, string destFileName ) ;void Move (string sourceFileName, string destFileName ) ;void Replace (string sourceFileName, string destinationFileName,string destinationBackupFileName ) ;FileAttributes GetAttributes (string path ) ;void SetAttributes (string path, FileAttributes fileAttributes ) ;void Decrypt (string path ) ;void Encrypt (string path ) ;DateTime GetCreationTime (string path ) ; DateTime GetLastAccessTime (string path ) ; DateTime GetLastWriteTime (string path ) ;void SetCreationTime (string path, DateTime creationTime ) ;void SetLastAccessTime (string path, DateTime lastAccessTime ) ;void SetLastWriteTime (string path, DateTime lastWriteTime ) ;FileSecurity GetAccessControl (string path ) ;FileSecurity GetAccessControl (string path, AccessControlSections includeSections ) ;void SetAccessControl (string path, FileSecurity fileSecurity ) ;
如果目标文件已经存在,则Move会抛出异常;Replace则不会。两个方法都允许文件被重命名以及移动到另一个目录中。
如果文件被标记为只读,则会抛出UnauthorizedAccessException;如果我们通过调用GetAttributes来识别属性。下面是GetAttributes返回的FileAttribute枚举成员:
1 2 3 Archive, Compressed, Device, Directory, Encrypted, Hidden, Normal, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System, Temporary
这个枚举中的成员是可组合的。下面显示如何修改文件的一个属性而不影响其他的属性:
1 2 3 4 5 6 7 8 9 string filePath = @"c:\temp\test.txt" ;FileAttributes fa = File.GetAttributes (filePath); if ((fa & FileAttributes.ReadOnly) > 0 ){ fa ^= FileAttributes.ReadOnly; File.SetAttributes (filePath, fa); } File.Delete (filePath);