飞道的博客

C#目录操作总结 [详细]

311人阅读  评论(0)


C# 中有关目录的操作,C# 中允许您使用各种目录和文件相关的类来操作目录和文件,比如 DirectoryInfo 类和 FileInfo 类。

DirectoryInfo 类

DirectoryInfo 类派生自 FileSystemInfo 类,其中提供了各种用于创建、移动、浏览目录和子目录的方法。需要注意的是,该类不能被继承。

下表列出了 DirectoryInfo 类中一些常用的属性:

属性 描述
Attributes 获取当前文件或目录的属性
CreationTime 获取当前文件或目录的创建时间
Exists 获取一个表示目录是否存在的布尔值
Extension 获取表示文件存在的字符串
FullName 获取目录或文件的完整路径
LastAccessTime 获取当前文件或目录最后被访问的时间
Name 获取该 DirectoryInfo 实例的名称

下表列出了 DirectoryInfo 类中一些常用的方法:

方法 描述
public void Create() 创建一个目录
public DirectoryInfo CreateSubdirectory(string path) 在指定的路径上创建子目录,指定的路径可以是相对于 DirectoryInfo
public override void Delete() 如果为空的,则删除该 DirectoryInfo
public DirectoryInfo[] GetDirectories() 返回当前目录的子目录
public FileInfo[] GetFiles() 从当前目录返回文件列表

完整的方法以及属性介绍,请查阅官方API
提示:赶紧点赞收藏起来吧!方便下次观看

FileInfo 类

FileInfo 类派生自 FileSystemInfo 类,其中提供了用于创建、复制、删除、移动、打开文件的属性和方法。与 DirectoryInfo 类相同,FileInfo 类也不能被继承。

下表列出了 FileInfo 类中一些常用的属性:

属性 描述
Attributes 获取当前文件的属性
CreationTime 获取当前文件的创建时间
Directory 获取文件所属目录的一个实例
Exists 获取一个表示文件是否存在的布尔值
Extension 获取表示文件存在的字符串
FullName 获取文件的完整路径
LastAccessTime 获取当前文件最后被访问的时间
LastWriteTime 获取文件最后被写入的时间
Length 获取当前文件的大小,以字节为单位
Name 获取文件的名称

下表列出了 FileInfo 类中一些常用的方法:

方法 描述
public StreamWriter AppendText() 创建一个 StreamWriter,追加文本到由 FileInfo
public FileStream Create() 创建一个文件
public override void Delete() 永久删除一个文件
public void MoveTo(string destFileName) 移动一个指定的文件到一个新的位置,提供选项来指定新的文件名
public FileStream Open(FileMode mode) 以指定的模式打开一个文件
public FileStream Open(FileMode mode,FileAccess access) 以指定的模式,使用 read、write 或 read/write 访问,来打开一个文件
public FileStream Open(FileMode mode,FileAccess access,FileShare share) 以指定的模式,使用 read、write 或 read/write 访问,以及指定的分享选项,来打开一个文件
public FileStream OpenRead() 创建一个只读的 FileStream
public FileStream OpenWrite() 创建一个只写的 FileStream

更详细的方法以及属性介绍,请查阅官方API

例子:使用 DirectoryInfo 类获取目录的信息。

using System;
using System.IO;
namespace c.biancheng.net
{
   
    class Demo
    {
   
        static void Main(string[] args) 
        {
   
            // 创建一个 DirectoryInfo 对象
            DirectoryInfo mydir = new DirectoryInfo(@"f:\code");
            // 获取目录中的文件以及它们的名称和大小
            FileInfo[] f = mydir.GetFiles();
            foreach (FileInfo file in f)
            {
   
                Console.WriteLine("文件名称:{0} 大小:{1}", file.Name, file.Length);
            }
            Console.ReadKey();
        }
    }
}

 

输出结果:

文件名称:demo.cs 大小:592
文件名称:demo.exe 大小:4096
文件名称:demo.txt 大小:54
文件名称:mydata 大小:30
文件名称:test.txt 大小:50

文件目录操作具体方法

  1. 相对路径转绝对路径
string fullfolder = HttpContext.Current.Server.MapPath(folder);
  1. 文件移动(改名)
File.Move(Server.MapPath("/a.txt"), Server.MapPath("/b.txt"));
  1. 文件复制
File.Copy(Server.MapPath("/a.txt"), Server.MapPath("/b.txt"), true);
  1. 文件是否存在
File.Exists(filefullname)
  1. 目录是否存在
Directory.Exists(fullfolder))
  1. 创建目录
Directory.CreateDirectory(fullfolder);
  1. 目录移动
Directory.Move
  1. 读取文本文件
StreamReader srd = File.OpenText(fullfilename);
srd.ReadToEnd();
srd.Close();
srd.Dispose();
  1. 写文件
StreamWriter swr = File.CreateText(Server.MapPath("test.txt"));
swr.Write("message");
swr.Close();
swr.Dispose();

10)删除文件

// 删除硬盘上的文件
if (File.Exists(filefullname))
{
   
    File.Delete(filefullname);
}

11)目录遍历

public void ListFiles(string pathname)
{
   
    // 所有目录与文件
    string[] subDirs = Directory.GetDirectories(pathname);
    string[] subFiles = Directory.GetFiles(pathname);
    foreach (string subDir in subDirs)
    {
   
        ListFiles(subDir);
    }
    // 所有文件
    foreach (string subFile in subFiles)
    {
   
        string filename = Path.GetFileName(subFile);
    }
}

12)文件修改时间

FileInfo fi = new FileInfo(@"c:\test.txt");
DateTime writetime = fi.LastWriteTime;

13)从含路径的文件名中提取文件名

System.IO.Path.GetFileName(fullPath);//文件名

C#获取项目指定目录下文件的方法

public List<FileInfo> GetFiles() {
   
  string path = string.Concat(System.AppDomain.CurrentDomain.BaseDirectory,"Files\\"); 
  //获取项目物理路径
  string[] fileType=new string[]{
   "pdf\\","pps\\","xls\\"};
  string[] directoryFiles = new string[] {
    };
  List<FileInfo> fileInfoList = new List<FileInfo>();
  for (int f = 0; f < fileType.Count(); f++) {
   
   path = path + fileType[f];
   directoryFiles=System.IO.Directory.GetFiles(path);
  for(int d=0;d<directoryFiles.Count();d++){
   
   FileInfo fileInfo = new FileInfo(directoryFiles[d]);
   fileInfoList.Add(fileInfo);
   }
  }
  return fileInfoList;
}

 

转载:https://blog.csdn.net/m0_65636467/article/details/129106015
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场