C#中的文件与文件夹(目录)相关操作
创建文件路径的父目录
/***
*
* CreateParentFolder():创建文件的父目录
* 传入参数:
* 返回参数:
*
* ***/
public static bool CreateParentFolder(string filePath)
{
try
{
FileInfo fileInfo = new FileInfo(filePath);
string parentDirPath = fileInfo.DirectoryName;
if (Directory.Exists(parentDirPath) == false) // 如果父亲文件夹不存在则创建
{
Directory.CreateDirectory(parentDirPath);
}
return true;
}
catch
{
return false;
}
}
File
FileInfo
Directory
DirectoryInfo
一 File
二 FileInfo
创建文件的上层父目录
FileInfo fileInfo = new FileInfo(savedPath);
string parentDirPath = fileInfo.DirectoryName;
三 Directory
四 DirectoryInfo
获取文件夹中所有子文件夹信息
DirectoryInfo dirInfo = new DirectoryInfo(multiMatrialPath);
DirectoryInfo[] Dirs = dirInfo.GetDirectories();
如果父亲文件夹不存在则创建
if (Directory.Exists(parentDirPath) == false) // 如果父亲文件夹不存在则创建
{
Directory.CreateDirectory(parentDirPath);
}
创建文件夹路径选择窗口
CreateDirectory可以直接创建多层文件夹
if (Directory.Exists(target_path + "/" + "result_" + i.ToString())==false)
{
Directory.CreateDirectory(target_path + "/" + "result_" + i.ToString()); // 创建文件夹
}
FolderBrowserDialog folder = new FolderBrowserDialog();
folder.Description = "选择产品图像文件存放目录";
if (folder.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(folder.SelectedPath);
}
获取当前文件夹下的所有文件夹信息
DirectoryInfo[] subDirs = dir.GetDirectories();
文件夹个数
MessageBox.Show(subDirs.Length.ToString());
文件夹名字
dir.Name
文件夹的路径
dir.FullName
删除指定文件夹下的所有文件
//path为路径,可以右键文件选择属性看到
//判断路径或文件夹是否存在(绝对路径)
if (Directory.Exists(path))
{
//返回所有文件夹的路径
var dirs = Directory.GetDirectories(path);
//遍历所有文件夹路径
for (int index = 0; index < dirs.Length; ++index)
{
//删除文件夹
Directory.Delete(dirs[index]);
}
//返回所有文件的路径
var files = Directory.GetFiles(path);
//遍历所有文件路径
for (int index = 0; index < files.Length; ++index)
{
//删除文件
File.Delete(files[index]);
}
}
//如果路径不存在就报错
else
{
//这里使用的是Unity
Debug.LogError("path not exist");
}
public static void DeleteDir(string file)
{
try
{
//去除文件夹和子文件的只读属性
//去除文件夹的只读属性
System.IO.DirectoryInfo fileInfo = new DirectoryInfo(file);
fileInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;
//去除文件的只读属性
System.IO.File.SetAttributes(file, System.IO.FileAttributes.Normal);
//判断文件夹是否还存在
if (Directory.Exists(file))
{
foreach (string f in Directory.GetFileSystemEntries(file))
{
if (File.Exists(f))
{
//如果有子文件删除文件
File.Delete(f);
Console.WriteLine(f);
}
else
{
//循环递归删除子文件夹
DeleteDir(f);
}
}
//删除空文件夹
Directory.Delete(file);
Console.WriteLine(file);
}
}
catch (Exception ex) // 异常处理
{
Console.WriteLine(ex.Message.ToString());// 异常信息
}
}