好文档 - 专业文书写作范文服务资料分享网站

第06章 目录与文件管理

天下 分享 时间: 加入收藏 我要投稿 点赞

第6章 目录与文件管理

目录及文件管理是操作系统的一个重要组成部分,包括目录的创建、移动、删除和文件的创建、移动、复制、删除以及对文件的读写等操作。

一个完整的应用程序,常常会涉及到对系统和用户的信息进行存储、读取和修改等处理。因此,如何有效地实现目录和文件操作也是必须掌握的一种技术。

在C#中,可以方便地对文件进行存储和读写等。.NET框架提供的Directory类和DirectoryInfo类用于对磁盘和目录进行操作管理;File类和FileInfo类用于对文件进行创建、复制、移动、删除和打开等操作。而StreamReader和StreamWriter等类则可以用于对文件以“流”的方式进行读写操作。

6.1 目录管理

在System.IO命名空间中,.NET框架提供了Directory类和DirectoryInfo类。这两个类均可用于对磁盘和目录进行操作管理,如复制、移动、重命名、创建和删除目录,获取和设置与目录的创建、访问及写入操作相关的时间信息。

DirectoryInfo类与Directory类的不同点在于DirectoryInfo类必须被实例化后才能使用,而Directory类则只提供了静态的方法。实际编程中,如果多次使用某个对象,一般用DirectoryInfo类;如果仅执行某一个操作,则使用Directory类提供的静态方法效率更高一些。DirectoryInfo类的构造函数形式如下:

public DirectoryInfo( string path);

参数path表示目录所在的路径。

表6-1和表6-2分别列出了DirectoryInfo类的主要属性及Directory类提供的静态方法。

表6-1 DirectoryInfo类的主要属性

属性名 Attributes 含义 获取或设置当前FileSystemInfo的FileAttributes。例如:DirectoryInfo d = new DirectoryInfo(@\d.Attributes = FileAttributes.ReadOnly; Exists FullName Parent Root CreationTime LastAccessTime LastWriteTime 获取指示目录是否存在的布尔值 获取当前路径的完整目录名 获取指定子目录的父目录 获取根目录 获取或设置当前目录创建时间 获取或设置上一次访问当前目录的时间 获取或设置上一次写入当前目录的时间 147

第6章 目录与文件管理

表6-2 Directory类提供的静态方法

方法 CreateDirectory Delete Exists GetCreationTime GetCurrentDirectory GetDirectories GetFiles GetFileSystemEntries GetLastAccessTime GetLastWriteTime GetParent Move SetCurrentDirectory SetLastAccessTime SetLastWriteTime 说明 创建指定路径中的所有目录 删除指定的目录 确定给定路径是否引用磁盘上的现有目录 获取目录的创建日期和时间 获取应用程序的当前工作目录 获取指定目录中子目录的名称 返回指定目录中的文件的名称 返回指定目录中所有文件和子目录的名称 返回上次访问指定文件或目录的日期和时间 返回上次写入指定文件或目录的日期和时间 检索指定路径的父目录,包括绝对路径和相对路径 将文件或目录及其内容移到新位置 将应用程序的当前工作目录设置为指定的目录 设置上次访问指定文件或目录的日期和时间 设置上次写入目录的日期和时间 6.1.1 目录的创建、删除与移动

1.目录的创建

Directory类的CreateDirectory方法用于创建指定路径中的所有目录。方法原型为:

public static DirectoryInfo CreateDirectory (string path)

其中参数path为要创建的目录路径。

如果指定的目录不存在,程序中调用该方法后,系统会按path指定的路径创建所有目录和子目录。例如在C盘根目录下创建一个名为test的目录的代码为:

Directory.CreateDirectory(\

使用CreateDirectory方法创建多级子目录时,也可以直接指定路径,例如,同时创建test目录和其下的t1一级子目录和t2二级子目录的代码为:

Directory.CreateDirectory(\

2.目录的删除

Directory类的Delete方法用于删除指定的目录,该方法有两种重载的形式: 1) public static void Delete (string path)

参数path为要移除的空目录的名称。path参数不区分大小写,可以是相对于当前工作目录的相对路径,也可以是绝对路径。注意,此目录必须为空才可以删除,否则将会引发异常。 如果希望获取当前工作目录,可使用GetCurrentDirectory方法。

如果在path参数中指定的目录包含文件或子目录,则此方法会引发IOException。 2) public static void Delete (string path, bool recursive) 其中:

path为要移除的目录的名称,不区分大小写; 148

第6章 目录与文件管理

recursive是一个布尔值,若要移除path中的目录、子目录和文件,则为 true;否则为 false。 例如删除C盘根目录下的test目录,且test目录为空的代码如下:

Directory.Delete(\

删除C盘根目录下的test目录,并移除path中的子目录和文件,代码如下:

Directory.Delete(\

【例6-1】创建并删除指定的目录。

using System; using System.IO; class Test {

public static void Main() {

//指定要操作的目录

string path = @\ try {

//确定目录是否存在 if (Directory.Exists(path)) {

Console.WriteLine(\目录已存在\ return; }

//创建目录

DirectoryInfo di = Directory.CreateDirectory(path);

Console.WriteLine(\成功创建目录:{0}\ //删除目录 di.Delete();

Console.WriteLine(\目录已删除\ }

catch (Exception e) {

Console.WriteLine(\程序异常: {0}\ } } }

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异常。

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 = \

snippets.PrintFileSystemEntries(path);

snippets.PrintFileSystemEntries(path, filter); snippets.GetLogicalDrives(); snippets.GetParent(path);

snippets.Move(\ }

//显示文件系统目录路径

void PrintFileSystemEntries(string path) {

try {

//获取文件系统目录路径

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(\路径是一个零长度字符串\ }

catch (System.IO.DirectoryNotFoundException) {

System.Console.WriteLine(\指定的路径无效\ } }

//PrintFileSystemEntries方法重载

void PrintFileSystemEntries(string path, string pattern) {

try {

//获取文件系统目录路径 string[] directoryEntries =

System.IO.Directory.GetFileSystemEntries(path, pattern); foreach (string str in directoryEntries)

150

第6章 目录与文件管理

{

System.Console.WriteLine(str); } }

catch (ArgumentNullException) {

System.Console.WriteLine(\路径为空引用\ }

catch (System.Security.SecurityException) {

System.Console.WriteLine(\检测到安全性错误\ }

catch (ArgumentException) {

System.Console.WriteLine(\路径是一个零长度字符串\ }

catch (System.IO.DirectoryNotFoundException) {

System.Console.WriteLine(\指定的路径无效\ } }

//显示系统所有逻辑驱动器 void GetLogicalDrives() {

try {

string[] drives = System.IO.Directory.GetLogicalDrives(); foreach (string str in drives) {

System.Console.WriteLine(str); } }

catch (System.IO.IOException) {

System.Console.WriteLine(\输入输出异常\ }

catch (System.Security.SecurityException) {

System.Console.WriteLine(\检测到安全性错误\ } }

//检索指定路径的父目录 void GetParent(string path) {

try {

System.IO.DirectoryInfo directoryInfo = System.IO.Directory.GetParent(path); System.Console.WriteLine(directoryInfo.FullName); }

catch (ArgumentNullException) {

151

第06章 目录与文件管理

第6章目录与文件管理目录及文件管理是操作系统的一个重要组成部分,包括目录的创建、移动、删除和文件的创建、移动、复制、删除以及对文件的读写等操作。一个完整的应用程序,常常会涉及到对系统和用户的信息进行存储、读取和修改等处理。因此,如何有效地实现目录和文件操作也是必须掌握的一种技术。在C#中,可以方便地对文件进行存储和读
推荐度:
点击下载文档文档为doc格式
3l7wd5846y5ap1c1l9m9
领取福利

微信扫码领取福利

微信扫码分享