最近在做文件读取的东西,长时间没有做这当面东西,感觉还是很生疏,当然百度了不少,下面是最终用到的方法,贴出来,以防止后面我忘了,给需要的人也提供一些资源吧!
1.删除文件
/// <summary>
/// 删除文件
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static bool DeleteDir(string path)
{
try
{
DirectoryInfo dir = new DirectoryInfo(path);
if (dir.Exists)
{
dir.Delete(true);
}
return true;
}
catch (Exception)
{
return false;
}
}
2.删除文件夹
/// <summary>
/// 删除非空文件夹
/// </summary>
/// <param name="path">要删除的文件夹目录</param>
public static bool DeleteDirectory(string path)
{
try
{
DirectoryInfo dir = new DirectoryInfo(path);
if (dir.Exists)
{
DirectoryInfo[] childs = dir.GetDirectories();
foreach (DirectoryInfo child in childs)
{
child.Delete(true);
}
dir.Delete(true);
}
return true;
}
catch (Exception)
{
return false;
}
}
3.检测文件夹是否存在
/// <summary>
/// 检测文件是否存在
/// </summary>
/// <param name="dirPath">路径</param>
/// <returns></returns>
public static bool GetExistsDirectory(string dirPath)
{
bool ren = false;
//判断该路径是否存在(是否为文件夹)
//判断该路径是否存在(是否为文件夹)
if (!Directory.Exists(dirPath))
{
FileInfo fileInfo = new FileInfo(dirPath);
if (fileInfo.Exists)
{
ren = true;
}
else
{
ren = false;
}
}
else
{
//定义一个DirectoryInfo对象
DirectoryInfo di = new DirectoryInfo(dirPath);
foreach (FileInfo fi in di.GetFiles())
{
if (fi.Exists)
{
ren = true;
}
else
{
ren = false;
}
}
}
return ren;
}
4.文件大小
//所给路径中所对应的文件大小
public static long FileSize(string filePath)
{
//定义一个FileInfo对象,是指与filePath所指向的文件相关联,以获取其大小
FileInfo fileInfo = new FileInfo(filePath);
return fileInfo.Length;
}
5.获取指定路径的大小
/// <summary>
/// 获取指定路径的大小
/// </summary>
/// <param name="dirPath">路径</param>
/// <returns></returns>
public static long GetDirectoryLength(string dirPath)
{
long len = 0;
//判断该路径是否存在(是否为文件夹)
if (!Directory.Exists(dirPath))
{
//查询文件的大小
len = FileSize(dirPath);
}
else
{
//定义一个DirectoryInfo对象
DirectoryInfo di = new DirectoryInfo(dirPath);
//通过GetFiles方法,获取di目录中的所有文件的大小
foreach (FileInfo fi in di.GetFiles())
{
len += fi.Length;
}
//获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归
DirectoryInfo[] dis = di.GetDirectories();
if (dis.Length > 0)
{
for (int i = 0; i < dis.Length; i++)
{
len += GetDirectoryLength(dis[i].FullName);
}
}
}
return len;
}
6.获取所传路径下的所有子目录
//获取所传路径下的所有子目录
public static List<string> GetAllDir(string rootPath)
{
List<string> filesList = new List<string>();
string[] subPaths = Directory.GetDirectories(rootPath);//得到所有子目录
foreach (string path in subPaths)
{
string filename=Path.GetFileName(path);
filesList.Add(filename);//文件所在文件夹
}
return filesList;
}
7.获取所传路径以下的所有子目录以及子目录下面的文件
//获取所传路径以下的所有子目录以及子目录下面的文件
public static List<string> GetAllDirectories(string rootPath)
{
List<string> filesList = new List<string>();
string[] subPaths = Directory.GetDirectories(rootPath);//得到所有子目录
foreach (string path in subPaths)
{
GetAllDirectories(path);//对每一个字目录做与根目录相同的操作:即找到子目录并将当前目录的文件名存入List
}
string[] files = Directory.GetFiles(rootPath);
foreach (string file in files)
{
filesList.Add(file);//将当前目录中的所有文件全名存入文件List
}
return filesList;
}