C#中Directory类目录操作(复制\重命名\创建\删除)

作者:袖梨 2022-06-25

Directory 类用于典型操作,如复制、移动、重命名、创建和删除目录。也可将 Directory 类用于获取和设置与目录的创建、访问及写入操作相关的 DateTime 信息。 由于所有的 Directory 方法都是静态的,所以如果只想执行一个操作,那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高。大多数 Directory 方法要求当前操作的目录的路径。

代码如下 复制代码

//1.---------文件夹创建、移动、删除---------

//创建文件夹
Directory.CreateDirectory(Server.MapPath("a"));
Directory.CreateDirectory(Server.MapPath("b"));
Directory.CreateDirectory(Server.MapPath("c"));
//移动b到a
Directory.Move(Server.MapPath("b"), Server.MapPath("ab"));
//删除c
Directory.Delete(Server.MapPath("c"));

//2.---------文件创建、复制、移动、删除---------

//创建文件
//使用File.Create创建再复制/移动/删除时会提示:文件正由另一进程使用,因此该进程无法访问该文件
//改用 FileStream 获取 File.Create 返回的 System.IO.FileStream 再进行关闭就无此问题
FileStream fs;
fs = File.Create(Server.MapPath("a.txt"));
fs.Close();
fs = File.Create(Server.MapPath("b.txt"));
fs.Close();
fs = File.Create(Server.MapPath("c.txt"));
fs.Close();
//复制文件
File.Copy(Server.MapPath("a.txt"), Server.MapPath("aa.txt"));
//移动文件
File.Move(Server.MapPath("b.txt"), Server.MapPath("ab.txt"));
File.Move(Server.MapPath("c.txt"), Server.MapPath("ac.txt"));
//删除文件
File.Delete(Server.MapPath("a.txt"));

//3.---------遍历文件夹中的文件和子文件夹并显示其属性---------

if(Directory.Exists(Server.MapPath("a")))
{
//所有子文件夹
foreach(string item in Directory.GetDirectories(Server.MapPath("a")))
{
Response.Write("文件夹:" + item + "
");
DirectoryInfo directoryinfo = new DirectoryInfo(item);
Response.Write("名称:" + directoryinfo.Name + "
");
Response.Write("路径:" + directoryinfo.FullName + "
");
Response.Write("创建时间:" + directoryinfo.CreationTime + "
");
Response.Write("上次访问时间:" + directoryinfo.LastAccessTime + "
");
Response.Write("上次修改时间:" + directoryinfo.LastWriteTime + "
");
Response.Write("父文件夹:" + directoryinfo.Parent + "
");
Response.Write("所在根目录:" + directoryinfo.Root + "
");
Response.Write("
");
}

//所有子文件
foreach (string item in Directory.GetFiles(Server.MapPath("a")))
{
Response.Write("文件:" + item + "
");
FileInfo fileinfo = new FileInfo(item);
Response.Write("名称:" + fileinfo.Name + "
");
Response.Write("扩展名:" + fileinfo.Extension +"
");
Response.Write("路径:" + fileinfo.FullName +"
");
Response.Write("大小:" + fileinfo.Length +"
");
Response.Write("创建时间:" + fileinfo.CreationTime +"
");
Response.Write("上次访问时间:" + fileinfo.LastAccessTime +"
");
Response.Write("上次修改时间:" + fileinfo.LastWriteTime +"
");
Response.Write("所在文件夹:" + fileinfo.DirectoryName +"
");
Response.Write("文件属性:" + fileinfo.Attributes +"
");
Response.Write("
");
}
}

//4.---------文件读写---------

if (File.Exists(Server.MapPath("aa.txt")))
{
StreamWriter streamwrite = new StreamWriter(Server.MapPath("aa.txt"));
streamwrite.WriteLine("木子屋");
streamwrite.WriteLine("https://www.111cn.net/");
streamwrite.Write("2008-04-13");
streamwrite.Close();

StreamReader streamreader = new StreamReader(Server.MapPath("aa.txt"));
Response.Write(streamreader.ReadLine());
Response.Write(streamreader.ReadToEnd());
streamreader.Close();
}

最后分享一个目录操作类

代码如下 复制代码

///


/// 目录操作类
///

public class DirectoryHelper
{
public DirectoryHelper()
{ }

///


/// 得到所有磁盘驱动器
///

///
public string[] AllDrivers()
{
return Directory.GetLogicalDrives();
}

///


/// 应用程序的当前工作目录,bin文件夹
///

///
public string CurrentDirectory()
{
return Directory.GetCurrentDirectory();
}

///


/// 获取path目录下的文件,不包括文件夹
///

///
///
public string[] AllFiles(string path)
{
return Directory.GetFiles(path);
}

///


/// 创建一个目录如果directory存在,那么就不创建了目录了
///

///
public void CreateDirectory(string directory)
{
//DirectoryInfo info = new DirectoryInfo(directory);
//info.Create();

DirectoryInfo info = Directory.CreateDirectory(directory);
}

///


/// 删除目录
///

///
public void DeleteDirectory(string path)
{
//Directory.Delete(path, false/*删除子目录*/); //子目录非空则报错。

Directory.Delete(path, true/*保留子目录*/); //忽略子目录内容,有没有内容都删除
}

///


/// 目录下的所有文件,隐藏文件也可见,偷窥吗?
///

///
///
public string[] AllContent(string path)
{
return Directory.GetFileSystemEntries(path);//如果path不存在则报错
}

///


/// 复制文件目录,复制完成原目录删除
///

///
///
public void CopyDirectory(string sourcePath/*复制前必须存在,复制完成后挂掉了*/,string targetPath/*复制前不能存在*/)
{
Directory.Move(sourcePath,targetPath);
}

///


/// 编码,说实话我没用过,不知道干吗用.
///

///
public string Codeing()
{
Encoding code = Encoding.Default;
//byte[] bytes = code.GetBytes("中华人民共和国");
byte[] bytes = code.GetBytes("i'm a smart boy");
return Encoding.GetEncoding("UTF-8").GetString(bytes); //doc环境不支持中文吗?中文不能正常转回去,英文就可以。
}
}

相关文章

精彩推荐