C#遍历文件夹及其子目录的完整实现方法
本文实例讲述了C#遍历文件夹及其子目录的完整实现方法。分享给大家供大家参考,具体如下:
usingSystem;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.IO;
usingSystem.Security.AccessControl;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("STT");
stringstr=@"E:\";
if(!str.EndsWith("\\"))
{
str+="\\";
}
IList<FileInfo>lst=GetFiles(str);
if(!Directory.Exists(str))
{
try
{
Directory.CreateDirectory(str);
}
catch(Exceptione)
{
Console.WriteLine(e.Message);
Console.ReadKey();
return;
}
}
if(File.Exists(str+"test.txt"))
{
File.Delete(str+"test.txt");
}
FileInfofile=newFileInfo(str+"test.txt");
if(!file.Directory.Exists)
{
Directory.CreateDirectory(file.DirectoryName);
}
using(StreamWriteroutFileWriter=newStreamWriter(str+"test.txt",false,Encoding.UTF8))
{
StringBuildersb=newStringBuilder();
foreach(FileInfoiteminlst)
{
sb.Append("\"");
sb.Append(item.FullName);
sb.Append("\"");
sb.Append(",");
sb.Append("\r\n");
}
sb.Remove(sb.Length-2,2);
outFileWriter.WriteLine(sb.ToString());
outFileWriter.Flush();
outFileWriter.Close();
}
Console.WriteLine("END");
Console.ReadKey();
}
privatestaticvoidGetDirectorys(stringstrPath,refList<string>lstDirect)
{
DirectoryInfodiFliles=newDirectoryInfo(strPath);
DirectoryInfo[]diArr=diFliles.GetDirectories();
//DirectorySecuritydirectorySecurity=null;
foreach(DirectoryInfodiindiArr)
{
try
{
//directorySecurity=newDirectorySecurity(di.FullName,AccessControlSections.Access);
//if(!directorySecurity.AreAccessRulesProtected)
//{
lstDirect.Add(di.FullName);
GetDirectorys(di.FullName,reflstDirect);
//}
}
catch
{
continue;
}
}
}
///<summary>
///遍历当前目录及子目录
///</summary>
///<paramname="strPath">文件路径</param>
///<returns>所有文件</returns>
privatestaticIList<FileInfo>GetFiles(stringstrPath)
{
List<FileInfo>lstFiles=newList<FileInfo>();
List<string>lstDirect=newList<string>();
lstDirect.Add(strPath);
DirectoryInfodiFliles=null;
GetDirectorys(strPath,reflstDirect);
foreach(stringstrinlstDirect)
{
try
{
diFliles=newDirectoryInfo(str);
lstFiles.AddRange(diFliles.GetFiles());
}
catch
{
continue;
}
}
returnlstFiles;
}
}
}
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。