第06章 目录与文件管理

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//获取文件系统目录路径 string[] directoryEntries = System.IO.Directory.GetFileSystemEntries(path); foreach (string str in directoryEntries) {
System.Console.WriteLine(str); } } catch (ArgumentNullException) { System.Console.WriteLine("路径为空引用"); } catch (System.Security.SecurityException) { System.Console.WriteLine("检测到安全性错误"); } catch (ArgumentException) { System.Console.WriteLine("路径是一个零长度字符串");
6.1.1 目录的创建、删除与移动
1.目录的创建 Directory 类的 CreateDirectory 方法用于创建指定路径中的所有目录。方法原型为:
public static DirectoryInfo CreateDirectory (string path)
其中参数 path 为要创建的目录路径。 如果指定的目录不存在,程序中调用该方法后,系统会按 path 指定的路径创建所有目录 和子目录。例如在 C 盘根目录下创建一个名为 test 的目录的代码为:
public DirectoryInfo( string path);
参数path表示目录所在的路径。 表 6-1 和表 6-2 分别列出了 DirectoryInfo 类的主要属性及 Directory 类提供的静态方法。
表 6-1 DirectoryInfo 类的主要属性
属性名
含义
Attributes
using System; namespace GetFileSystemEntries {
149
第 6 章 目录与文件管理
class Class1 {
static void Main(string[] args) {
Class1 snippets = new Class1(); string path = System.IO.Directory.GetCurrentDirectory(); string filter = "*.exe"; snippets.PrintFileSystemEntries(path); snippets.PrintFileSystemEntries(path, filter); snippets.GetLogicalDrives(); snippets.GetParent(path); snippets.Move("C:\\proof", "C:\\Temp"); } //显示文件系统目录路径 void PrintFileSystemEntries(string path) { try {
public static void Main() {
//指定要操作的目录 string path = @"c:\MyDir"; try {
//确定目录是否存在 if (Directory.Exists(path)) {
Console.WriteLine("目录已存在"); return; } //创建目录 DirectoryInfo di = Directory.CreateDirectory(path); Console.WriteLine("成功创建目录:{0}", Directory.GetCreationTime(path)); //删除目录 di.Delete(); Console.WriteLine("目录已删除"); } catch (Exception e) { Console.WriteLine("程序异常: {0}", e.ToString()); } } }
获取或设置当前 FileSystemInfo 的 FileAttributes。例如:DirectoryInfo d = new DirectoryInfo(@"c:\MyDir");
d.Attributes = FileAttributes.ReadOnly;
Exists
获取指示目录是否存在的布尔值
第 6 章 目录与文件管理
目录及文件管理是操作系统的一个重要组成部分,包括目录的创建、移动、删除和文件的 创建、移动、复制、删除以及对文件的读写等操作。
一个完整的应用程序,常常会涉及到对系统和用户的信息进行存储、读取和修改等处理。 因此,如何有效地实现目录和文件操作也是必须掌握的一种技术。
在 C#中,可以方便地对文件进行存储和读写等。.NET 框架提供的 Directory 类和 DirectoryInfo 类用于对磁盘和目录进行操作管理;File 类和 FileInfo 类用于对文件进行创建、 复制、移动、删除和打开等操作。而 StreamReader 和 StreamWriter 等类则可以用于对文件以 “流”的方式进行读写操作。
Directory.Delete("c:\\test");
删除 C 盘根目录下的 test 目录,并移除 path 中的子目录和文件,代码如下:
Directory.Delete("c:\\test",true);
【例 6-1】创建并删除指定的目录。
using System; using System.IO; class Test {
2) public static void Delete (string path, bool recursive) 其中: path 为要移除的目录的名称,不区分大小写;
148
第 6 章 目录与文件管理
recursive 是一个布尔值,若要移除 path 中的目录、子目录和文件,则为 true;否则为 false。 例如删除 C 盘根目录下的 test 目录,且 test 目录为空的代码如下:
System.Console.WriteLine("路径是一个零长度字符串"); } catch (System.IO.DirectoryNotFoundException) {
System.Console.WriteLine("指定的路径无效"); } } //显示系统所有逻辑驱动器 void GetLogicalDrives() { try {
//获取文件系统目录路径 string[] directoryEntries =
System.IO.Directory.GetFileSystemEntries(path, pattern); foreach (string str in directoryEntries)
150
第 6 章 目录与文件管理
FullName
获取当前路径的完整目录名
Parent
获取指定子目录的父目录
Root
获取根目录
CreationTime
获取或设置当前目录创建时间
LastAccessTime
获取或设置上一次访问当前目录的时间
LastWriteTime
获取或设置上一次 章 目录与文件管理
方法 CreateDirectory Delete Exists GetCreationTime GetCurrentDirectory GetDirectories GetFiles GetFileSystemEntries GetLastAccessTime GetLastWriteTime GetParent Move SetCurrentDirectory SetLastAccessTime SetLastWriteTime
Directory.CreateDirectory("c:\\test");
使用 CreateDirectory 方法创建多级子目录时,也可以直接指定路径,例如,同时创建 test 目录和其下的 t1 一级子目录和 t2 二级子目录的代码为:
Directory.CreateDirectory("c:\\test\\t1\\t2");
2.目录的删除 Directory 类的 Delete 方法用于删除指定的目录,该方法有两种重载的形式:
1) public static void Delete (string path) 参数 path 为要移除的空目录的名称。path 参数不区分大小写,可以是相对于当前工作目 录的相对路径,也可以是绝对路径。注意,此目录必须为空才可以删除,否则将会引发异常。 如果希望获取当前工作目录,可使用 GetCurrentDirectory 方法。 如果在 path 参数中指定的目录包含文件或子目录,则此方法会引发 IOException。
表 6-2 Directory 类提供的静态方法
说明 创建指定路径中的所有目录 删除指定的目录 确定给定路径是否引用磁盘上的现有目录 获取目录的创建日期和时间 获取应用程序的当前工作目录 获取指定目录中子目录的名称 返回指定目录中的文件的名称 返回指定目录中所有文件和子目录的名称 返回上次访问指定文件或目录的日期和时间 返回上次写入指定文件或目录的日期和时间 检索指定路径的父目录,包括绝对路径和相对路径 将文件或目录及其内容移到新位置 将应用程序的当前工作目录设置为指定的目录 设置上次访问指定文件或目录的日期和时间 设置上次写入目录的日期和时间
} catch (System.IO.DirectoryNotFoundException) {
System.Console.WriteLine("指定的路径无效"); } } //PrintFileSystemEntries 方法重载 void PrintFileSystemEntries(string path, string pattern) { try {
3.目录的移动 Directory 类的 Move 方法能够重命名或移动目录。方法原型为:
public static void Move (string sourceDirName, string destDirName)
其中: sourceDirName 为要移动的文件或目录的路径;destDirName 为指向 sourceDirName 的新位 置的目标路径。 注意,destDirName 参数指定的目标路径应为新目录。如将“c:\mydir”移到“c:\public”, 并且“c:\public”已存在,则此方法会引发 IOException 异常。 【例 6-2】移动指定的目录,并捕获典型的 I/O 异常。
{ System.Console.WriteLine(str);
} } catch (ArgumentNullException) {
System.Console.WriteLine("路径为空引用"); } catch (System.Security.SecurityException) {
System.Console.WriteLine("检测到安全性错误"); } catch (ArgumentException) {
string[] drives = System.IO.Directory.GetLogicalDrives(); foreach (string str in drives) {
6.1 目录管理
在 System.IO 命名空间中,.NET 框架提供了 Directory 类和 DirectoryInfo 类。这两个类均 可用于对磁盘和目录进行操作管理,如复制、移动、重命名、创建和删除目录,获取和设置与 目录的创建、访问及写入操作相关的时间信息。
DirectoryInfo 类与 Directory 类的不同点在于 DirectoryInfo 类必须被实例化后才能使用, 而 Directory 类则只提供了静态的方法。实际编程中,如果多次使用某个对象,一般用 DirectoryInfo 类;如果仅执行某一个操作,则使用 Directory 类提供的静态方法效率更高一些。 DirectoryInfo 类的构造函数形式如下:
相关文档
最新文档