您的位置:首页 > 编程语言 > C#

C#遍历文件夹及其子目录

2015-08-24 09:24 549 查看
using System;

using System.Collections;

using System.Collections.Generic;

using System.IO;

using System.Security.AccessControl;

using System.Text;



namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("STT");

string str = @"E:\";

if (!str.EndsWith("\\"))

{

str += "\\";

}

IList<FileInfo> lst = GetFiles(str);

if (!Directory.Exists(str))

{

try

{

Directory.CreateDirectory(str);

}

catch(Exception e)

{

Console.WriteLine(e.Message);

Console.ReadKey();

return;

}

}

if (File.Exists(str + "test.txt"))

{

File.Delete(str + "test.txt");

}

FileInfo file = new FileInfo(str + "test.txt");

if (!file.Directory.Exists)

{

Directory.CreateDirectory(file.DirectoryName);

}

using (StreamWriter outFileWriter = new StreamWriter(str + "test.txt", false, Encoding.UTF8))

{

StringBuilder sb = new StringBuilder();

foreach (FileInfo item in lst)

{

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();

}



private static void GetDirectorys(string strPath, ref List<string> lstDirect)

{

DirectoryInfo diFliles = new DirectoryInfo(strPath);

DirectoryInfo[] diArr = diFliles.GetDirectories();

//DirectorySecurity directorySecurity = null;

foreach (DirectoryInfo di in diArr)

{

try

{

//directorySecurity = new DirectorySecurity(di.FullName, AccessControlSections.Access);

//if (!directorySecurity.AreAccessRulesProtected)

//{

lstDirect.Add(di.FullName);

GetDirectorys(di.FullName, ref lstDirect);

//}

}

catch

{

continue;

}

}

}

/// <summary>

/// 遍历当前目录及子目录

/// </summary>

/// <param name="strPath">文件路径</param>

/// <returns>所有文件</returns>

private static IList<FileInfo> GetFiles(string strPath)

{

List<FileInfo> lstFiles = new List<FileInfo>();

List<string> lstDirect = new List<string>();

lstDirect.Add(strPath);

DirectoryInfo diFliles = null;

GetDirectorys(strPath, ref lstDirect);

foreach (string str in lstDirect)

{

try

{

diFliles = new DirectoryInfo(str);

lstFiles.AddRange(diFliles.GetFiles());

}

catch

{

continue;

}

}

return lstFiles;

}

}

}

[csharp] view
plaincopy

<pre name="code" class="csharp"></pre>

<pre></pre>

<pre name="code" class="csharp"></pre><pre name="code" class="csharp"></pre><pre name="code" class="csharp"></pre>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐