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>
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>
相关文章推荐
- Combination Sum III C#
- c#读取文件一行一行读取
- 编写高质量代码改善C#程序的157个建议——建议153:若抛出异常,则必须要注释
- 编写高质量代码改善C#程序的157个建议——建议152:最少,甚至是不要注释
- 编写高质量代码改善C#程序的157个建议——建议151:使用事件访问器替换公开的事件成员变量
- 编写高质量代码改善C#程序的157个建议——建议150:使用匿名方法、Lambda表达式代替方法
- 编写高质量代码改善C#程序的157个建议——建议149:使用表驱动法避免过长的if和switch分支
- C#事件
- 编写高质量代码改善C#程序的157个建议——建议148:不重复代码
- 编写高质量代码改善C#程序的157个建议——建议147:重构多个相关属性为一个类
- 编写高质量代码改善C#程序的157个建议——建议146:只对外公布必要的操作
- 编写高质量代码改善C#程序的157个建议——建议145:避免过长的方法和过长的类
- 编写高质量代码改善C#程序的157个建议——建议144:一个方法只做一件事
- c# 实现类似skynet的核心库
- c#读取Execl表格数据
- 编写高质量代码改善C#程序的157个建议——建议143:方法抽象级别应在同一层次
- C# String.Format字符串中包含"{" "}"时需注意的问题
- C#使用DirectShow实现简单的视频播放
- 编写高质量代码改善C#程序的157个建议——建议142:总是提供有意义的命名
- 【C#】事务