好久没写博客了,今天把昨天研究的东西写上
C# 判断文件是否存在
我们需要知道某文件在该路径下是否存在,则需要遍历一遍该路径
//列出路径下所有文件以及子文件夹内的文件
public static void checkRepeat(string path)
{
//绑定到指定的文件夹目录
DirectoryInfo dir = new DirectoryInfo(path);
//检索表示当前目录的文件
FileSystemInfo[] fsinfos = dir.GetFileSystemInfos();
//遍历检索的文件
foreach (FileSystemInfo fsinfo in fsinfos)
{
//判断是否为空文件夹
if (fsinfo is DirectoryInfo)
{
//递归调用-列出路径下文件夹内的所有文件
checkRepeat(fsinfo.FullName);
}
else
{
Console.WriteLine(fsinfo.FullName);//打出文件名
}
}
}
上面的方法便是遍历指定路径下,打出所有的文件以及文件夹内容
那么能够遍历出所有文件,我们只需要进行判断就可以进行操作
/// <summary>
/// 判断是否有同名文件
/// </summary>
/// <param name="path">文件夹路径</param>
/// <param name="fileName">文件名(带后缀)</param>
public static bool checkRepeat(string path, string fileName)
{
//绑定到指定的文件夹目录
DirectoryInfo dir = new DirectoryInfo(path);
//检索表示当前目录的文件和子目录
FileSystemInfo[] fsinfos = dir.GetFileSystemInfos();
//遍历检索的文件和子目录
foreach (FileSystemInfo fsinfo in fsinfos)
{
if (fsinfo.FullName == path + "\\" + fileName)
{
return true;
}
}
return false;
}
之后便可以调用该函数对文件进行操作(移动,复制,删除)
string path = "";//路径
string fileName = "Test.txt";//文件名
if(checkRepeat(path, fileName)){
//File.Delete(path + "\\" + fileName)//删除该文件
//...
}else{
//...
}
具体用在何处看各位如何使用了
写该博客是备份SQL Server时,发现重复导出重名bak文件会使得文件大小变大,发现是文件不会重写,而是继续写入导致
因此需要将原文件删除,重新创建