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


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;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薪薪代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值