操作目录(文件和流)
.NET Framework类库提供了两个用于操作目录的类DirectoryInfo,Directory类,其中DirectoryInfo类提供了用于处理目录的实力方法,而Directory类则提供了静态方法。
1.DirectoryInfo类提供了用于创建、删除和操作目录的各种实例方法和特性。如下的示例:
- using System;
- using System.IO;
- namespace ConsoleApplicationDirectoryInfo
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"D:/My Folder";
- DirectoryInfo di = new DirectoryInfo(path);
- try
- {
- //---if directory does not exists---
- if (!di.Exists)
- {
- //---create the directory--
- di.Create();//---D:/My Folder---
- //---creates subdirectories---
- di.CreateSubdirectory("Subdir1");//---D:/My Folder/Subdir1---
- di.CreateSubdirectory("Subdir2");//---D:/My Folder/Subdir2---
- }
- //---print out someinfo about the directory
- Console.WriteLine(di.FullName);
- Console.WriteLine(di.CreationTime);
- //---get and print all the subdirectories---
- DirectoryInfo[] subDirs = di.GetDirectories();
- foreach (DirectoryInfo subDir in subDirs)
- Console.WriteLine(subDir.FullName);
- //---get the parent of D:/My Folder---
- DirectoryInfo parent = di.Parent;
- if (parent.Exists)
- {
- //---prints out D:/---
- Console.WriteLine(parent.FullName);
- }
- //---create D:/My Folder/Subdir3---
- DirectoryInfo newlyCreatedFolder = di.CreateSubdirectory("Subdir3");
- //---delete D:/My Folder/Subdir3---
- newlyCreatedFolder.Delete();
- }
- catch (IOException ex)
- {
- Console.WriteLine(ex.Message);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
- }
- }
运行结果如下:
2.Directory类
Director类与DirectoryInfo类相似,两者之间的关键区别是Directory类提供了静态方法而非实例方法。另外,Directory类只提供方法,而没有提供任何特性。
- using System;
- using System.IO;
- namespace ConsoleApplicationDirectory
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"D:/My Folder";
- try
- {
- //---if directory does not exits---
- if (!Directory.Exists(path))
- {
- //---create the directory---
- Directory.CreateDirectory(path);
- //---set the current directory to D:/My Folder---
- Directory.SetCurrentDirectory(path);
- //cteates subdirectories---
- //---D:/My Folder/Subdir1
- Directory.CreateDirectory("Subdir1");
- //---D:/My Folder/Subdir2
- Directory.CreateDirectory("Subdir2");
- }
- //---set the current directory to D;/My Folder---
- Directory.SetCurrentDirectory(path);
- //---print out some info about the directory---
- Console.WriteLine(Directory.GetCurrentDirectory());
- Console.WriteLine(Directory.GetCreationTime(path));
- //---get and print all the subdirectories---
- string[] subDirs = Directory.GetDirectories(path);
- foreach (string subDir in subDirs)
- Console.WriteLine(subDir);
- //---get the parent of D:/My Folder---
- DirectoryInfo parent = Directory.GetParent(path);
- if (parent.Exists)
- {
- //---prints out D;/---
- Console.WriteLine(parent.FullName);
- }
- //---creates D:/My Folder/Subdir3---
- Directory.CreateDirectory("Subdir3");
- //---delete D:/My Folder/Subdir3---
- Directory.Delete("Subdir3");
- }
- catch (IOException ex)
- {
- Console.WriteLine(ex.Message);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
- }
- }
运行结果:
注意:
1.一些方法(例如GetParent()仍然返回DirectoryInfo对象)
2.一般来说,如果执行许多目录操作,则使用DirectoryInfo类,实例化DirectoryInfo对象之后,则对象就具有当前操作的目录的相关详细信息。相反,Directory类较为简单,适合与偶然处理目录的情况。