C#文件系统管理

  管理文件系统主要是对计算机中文件和目录的管理,例如,读取文件信息、删除文件和读取目录信息等。这些功能的实现主要是由System.IO命名空间下的类对文件和目录进行操作

  System.IO命名空间为目录和文件的操作提供了必要的类、方法和属性

一、Directory类和DirectoryInfo类

  在System.IO命名空间中,提供了Directory类和DirectoryInfo类来进行目录管理。使用这两个类可以完成对目录及其子目录的创建、移动、浏览等操作,甚至还可以定义隐藏目录和只读目录

  Directory类的所有方法都为静态方法,因此无需创建对象即可调用,这些方法可以操纵和查询任何目录的信息;而DirectoryInfo类需要有实例成员才可以调用其方法,从而有效地对一个目录进行多种操作。DirectoryInfo类实例化后,还可以通过其属性获取目录的创建时间和最后修改时间等状态

  

  1、DirectoryInfo类的常用属性

  DirectoryInfo类的属性可以获取或设置当前目录的相关属性,下面创建一个示例,使用Attributes等属性设置并获C:\Users\Eniac\Desktop\TestDirectory目录的相关属性信息,代码如下:

string dirPath = "C:\\Users\\Eniac\\Desktop\\TestDirectory";    //目录的绝对路径
if (Directory.Exists(dirPath))     //如果目录存在
{
    DirectoryInfo info = new DirectoryInfo(dirPath);    //初始化当前目录实例
    info.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden;  //利用Attributes属性设置目录为只读和隐藏
   /*利用DirectoryInfo实例的属性获得当前目录的信息*/
    label1.Text += "全部名称                : " + info.FullName + "\n";
    label1.Text += "目录创建时间            : " + info.CreationTime.ToString() + "\n";
    label1.Text += "最后一次访问该目录的时间: " + info.LastAccessTime.ToString() + "\n";
    label1.Text += "最后一次修改目录时间    : " + info.LastWriteTime.ToString() + "\n";
    label1.Text += "DirectoryInfo实例名称   : " + info.Name + "\n";
    label1.Text += "父目录                  : " + info.Parent + "\n";
    label1.Text += "路径根部分              : " + info.Root.ToString() + "\n";
}
else
{
    label1.Text = "该目录不存在,请检验路径是否正确";
}

  执行结果如下图:

    

  2、Directory类的常用方法

  (1)Exists方法

  Exists方法接收一个参数,该参数表示包含当前目录路径的字符串,Exists方法返回结果指示目录是否存在,如果存在,返回true,否则返回false。如上例if语句的判别条件:

if (Directory.Exists(dirPath))     //如果目录存在

  (2)CreatDirectory方法

  CreatDirectory方法接受一个创建目录路径的String类型参数,该方法会根据此路径创建新目录,并且该方法返回一个DirectoryInfo实例,如果创建的目录已经存在,则返回代表指定目录的类实例,不会创建目录,也不会产生异常。通常用法如下:

if (!Directory.Exists(dirPath))   //如果目录不存在就创建目录
{
    Directory.CreateDirectory(dirPath);
}

  (3)Delete方法

  Delete方法可以删除指定的目录,该方法为一个重载方法,可以接收一个参数或两个参数。当方法接收一个参数时,该参数为指定目录的路径,这种情况下只能删除指定的空目录,如果目录不空,系统会抛出异常;当该方法接收两个参数时,第二个参数为bool值,如果为true,则可以删除非空目录。通常用法如下:

if(Directory.Exists(dirPath))    //如果目录存在
{
    try
    {
        Directory.Delete(dirPath,true);//删除目录以及目录中所有的子目录和文件
    }
    catch(Exception ex)    //当出现异常时,系统抛出异常
    {
        MessageBox.Show(ex.Message.ToString());
    }
}    

  (4)Move方法

  Move方法表示将指定目录移动到新位置,并提供指定新目录名。该方法能够接收两个参数,其中第一个参数表示要移动的目录路径,第二个参数表示目标路径(加上指定的新目录名),当要移动的目录和目标路径的父目录相同时,Move就不再移动目录而是重命名目录。Move方法不能把目录在不同的逻辑驱动器之间进行移动,格式如下:

string dirPath1 = "C:\Users\Eniac\Desktop\dir1";
string dirPath2 = "C:\Program Files\dir2";
Directory.Move(dirPath1,dirPath2); //把目录dir1移动到C:\Program Files目录下并重命名为dir2

  另外Directory类还有以下方法,就不一一详细介绍了:

Directory.GetFiles(dirPath);  //获取指定目录中所有文件的文件名(文件列表,包含子目录)
Directory.GetDirectories(dirPath);  //获取指定目录下所有子目录名
Directory.GetFileSystemEntries(dirPath); //获取指定目录中的所有子目录名及文件名

  DirectoryInfo类中还有一些方法,DirectoryInfo类对象通过使用这些方法可以操作当前文件,这些方法的使用跟Directory类的方法很类似,并且有很多功能也是相同的。具体使用时,如果用户打算多次重用某个对象,可以考虑使用DirectoryInfo的实例方法,而不是Directory类相应的静态方法,因为DirectoryInfo的实例方法并不总是需要进行安全检查,默认情况下,该类将向所有用户授予对新目录的完全读/写访问权限

  由于DirectoryInfo类中的方法和Directory类的方法有很多相似之处,只是调试的方式不同,在此就不再对该类中的方法进行讲解

    

二、File类和FileInfo类

  System.IO命名空间的File类和FileInfo类提供有关文件系统操作的相关内容,例如创建、删除、移动和打开文件等

  File类的操作方式与Directory类相似,File类中的方法大多都为静态方法;而FileInfo类和上文中讲解的DirectoryInfo类相似,只有在实例化的情况下才可以使用其属性和方法

  1、FileInfo类的常用属性

  FileInfo类主要用于对实例对象的操作,跟DirectoryInfo类的操作方式比较相似,该类提供了很多属性,通过FileInfo类的属性可以获得文件的相关信息。我们通过下面的程序简单了解一下FileInfo类的属性:

private void button1_Click(object sender, EventArgs e)//选择文件
{
    /*此处用到了一个OpenFileDialog控件*/
    if (openFileDialog1.ShowDialog() != DialogResult.OK)//打开失败则退出
    {
        return;
    }
    textBox1.Text = openFileDialog1.FileName;//把选中文件的绝对路径填入文本框
}

private void button2_Click(object sender, EventArgs e)//获取详细信息
{
    string filePath = textBox1.Text;    //文件的绝对路径
    FileInfo info = new FileInfo(filePath);//初始化当前文件实例
    label1.Text += "········文件名称: " + info.Name + "\n";
    label1.Text += "······文件完整路径: " + info.FullName + "\n";
    label1.Text += "····所在目录完整路径: " + info.DirectoryName + "\n";
    label1.Text += "·······文件扩展名: " + info.Extension + "\n";
    label1.Text += "········文件大小: " + info.Length / 1024 + "KB\n";
    label1.Text += "······文件创建时间: " + info.CreationTime.ToString() + "\n";
    label1.Text += "最后一次访问该文件的时间: " + info.LastAccessTime.ToString() + "\n";
    label1.Text += "·最后一次写入该文件时间: " + info.LastWriteTime.ToString() + "\n";
    label1.Text += "·····文件是否为只读: " + info.IsReadOnly + "\n";
}

  执行结果如下图:

  2、File类的常用方法

  下面列出了File类的常用方法:

File.Exists(filePath);  //用于判定指定文件是否存在
File.Create(filePath);  //在指定路径中创建文件
File.Delete(filePath);  //删除指定文件
File.Move(filePath1,filePath2);//把filePath1文件移动到指定的filePath2路径
File.Copy(filePath1,filePath2);//把filePath1文件复制到指定的filePath2路径
File.AppendAllText(filePath,String);//将字符串(第二个参数)追加到指定文件中,若文件不存在则此方法先创建文件再追加
File.ReadAllLines(filePath);//一次性读取指定文件的所有行,返回一个字符串数组,数组元素是每一行的内容
File.ReadAllText(filePath);//一次性读取指定文件的所有内容,返回一个包含全部文本内容的字符串
File.WriteAllLines(filePath,String[]);//一次将字符串数组的每一个元素作为一行写入指定文件
File.WriteAllText(filePath,String);//一次性将字符串(第二个参数)写入指定文件

  上述后四种方法适用于文件读写的内容不是很多的情况下,在文件读写的时候会细讲

  FileInfo类中还有一些方法,FileInfo类对象通过使用这些方法可以操作当前文件,这些方法的使用跟File类的方法很类似,并且有很多功能也是相同的。具体使用时,如果用户打算多次重用某个对象,可以考虑使用FileInfo的实例方法,而不是File类相应的静态方法,因为FileInfo的实例方法并不总是需要进行安全检查,默认情况下,该类将向所有用户授予对新文件的完全读/写访问权限

  由于FileInfo类中的方法和File类的方法有很多相似之处,只是调试的方式不同,在此就不再对该类中的方法进行讲解

    

时间: 2024-10-17 09:51:39

C#文件系统管理的相关文章

Linux基础之磁盘及文件系统管理(二)

磁盘和文件系统管理 文件系统管理工具: 创建文件系统的工具 mkfs mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ... 检测及修复文件系统的工具 fsck fsck.ext2, fsck.ext3, ... 查看其属性的工具 dumpe2fs, tune2fs 调整文件系统特性: tune2fs 内核级文件系统的组成部分: 文件系统驱动:由内核提供 文件系统箮理工具:由用户空间的应用程序提供 ext系列文件系统的管理工具: mkf

磁盘和文件系统管理

我们知道一块磁盘是可以被分区成多个分区的(partition),以Windows的观点来看,你可能会有一颗磁盘并且将他分区成为C:, D:, E:盘,那个C, D,E就是分区.Linux的设备都是以文件的型态存在,磁盘设备接口的不同也早就了磁盘文件名的不同.即IDE接口的磁盘设备文件名都是/dev/hd[a-z]的格式,例如:/dev/hda./dev/hdb.SCSI, SATA, SAS, USB接口的磁盘设备文件名都是:/dev/sd[a-z],例如sda.sdb,磁盘设备的命名主要是根据

第八章、Linux 磁盘与文件系统管理

第八章.Linux 磁盘与文件系统管理 1. 认识 EXT2 文件系统 1.1 硬盘组成与分割的复习 1.2 文件系统特性: 索引式文件系统 1.3 Linux 的 EXT2 文件系统(inode): data block, inode table, superblock, dumpe2fs 1.4 与目录树的关系 1.5 EXT2/EXT3 文件的存取与日志式文件系统的功能 1.6 Linux 文件系统的运行 1.7 挂载点的意义 (mount point) 1.8 其他 Linux 支持的文

Linux磁盘和文件系统管理

Linux系统中的磁盘和文件系统管理,之所以将二者放在一起总结,是因为在平时的工作中,二者是相辅相成的,常常用来一起使用. 首先介绍下磁盘分区的管理工具 常用的磁盘分区管理工具有fdisk,parted,sfdisk 这里我们介绍下常用的fdsik工具 fdisk -l [DEVICE]... :列出指定磁盘设备上的分区情况 fdisk [DEVICE]:创建分区 fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能:所有的操作均在内存中完成,没有直接同步到磁盘:直到

Linux磁盘管理及文件系统管理中命令的使用

1.磁盘管理工具fdisk的使用: 最多支持在一块硬盘上的15个分区: 分区管理子命令: p: 显示磁盘信息 n: 创建一个5G的主分区 d: 删除分区 t: 修改分区ID l: 列出所有支持ID类型 w: 保存退出 q: 放弃修改并退出 m: 获取帮助 创建完成之后,查看内核是否已经识别新的分区: # cat /proc/partitions 如果没有识别到新建分区可使用以下三个命令让内核重读磁盘分区表: CentOS 5: partprobe [DEVICE] CentOS 6,7: par

Linux运维 第二阶段 (六)文件系统管理

Linux运维第二阶段(六)文件系统管理 一.硬盘: 逻辑结构:扇区sectors(磁盘的最小存贮单位).磁道.柱面cylinders: 硬盘大小:磁头数*柱面数*扇区数*每个扇区的大小 注:柱面数表示硬盘每一盘片有几条磁道,扇区数表示每条磁道上有几个扇区 二.文件系统: >超级块(superblock)记录整个文件系统的信息,包括block与inode的总量,已经使用的,未使用的,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间: >数据块(datablock)用来实际保存数据

磁盘及文件系统管理详解---急需加强

磁盘管理: 机械式硬盘 U盘.光盘.软盘.硬件.磁带 MBR:Master Boot Record 主引导记录 ln [-s -v] SRC DEST:创建链接文件,默认硬链接 -s:创建软连接 -v:显示过程 硬链接: 1.只能对文件创建,不能应用于目录 2.不能跨文件系统 3.创建硬链接会增加文件被链接的次数 符号链接(软连接): 1.可以应用于目录 2.可以跨文件系统 3.不会增加被链接文件的链接次数 4.其大小为指定的路径所包含的字符个数 du -s -h df:显示整个磁盘分区使用情况

NO.7day系统监控,硬盘分区和文件系统管理

系统监控,硬盘分区和文件系统管理 1.系统监控 top命令:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.默认每5秒刷新屏幕数据. top pid  进程id  ppid 父进程id free命令:显示内存的使用状态 buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据.这二者是为了提高IO性能的,并由OS管理.实际系统可用内存应该以available数据为准. ps命令:进程

磁盘及文件系统管理

挂载一块新的硬盘到文件系统的步骤: 1)在VMware中申请新的硬盘: 2)分区 3)高级格式化 4)挂载  (包括swap分区的挂载) 在VMware中申请新的硬盘 分区 [[email protected] ~]# fdisk /dev/sdb... Command (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder

Linux磁盘与文件系统管理

Linux磁盘与文件系统管理 磁盘分区后需要进行格式化,是为什么呢? 因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此需要将分区进行格式化,以成为操作系统能够利用的文件系统格式.