c#写一个函数,读出某个文件夹下所有文件和子文件夹的路径,并把这些路径放到一个LIST里面

 我来答
尚仙2121
推荐于2016-03-18 · TA获得超过143个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:196万
展开全部
        static List<string> list = new List<string>();//定义list变量,存放获取到的路径
        public static List<string> getPath(string path)
        {
            DirectoryInfo dir = new DirectoryInfo(path);
            FileInfo[] fil = dir.GetFiles();
            DirectoryInfo[] dii = dir.GetDirectories();
            foreach (FileInfo f in fil)
            {
                list.Add(f.FullName);//添加文件的路径到列表
            }

            //获取子文件夹内的文件列表,递归遍历
            foreach (DirectoryInfo d in dii)
            {
                getPath(d.FullName);
                list.Add(d.FullName);//添加文件夹的路径到列表
            }
            return list;
        }

调用此函数需要传入指定的文件夹路径,如 D:\MyFile .可以将该文件夹下的文件和子文件夹路径全部获取,并利用递归,获取子文件夹内所有内容。

samismiling
2015-07-01 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
如下代码中,获取的list放在IList<FileInfo> lst中,后面用StringBuilder拼接起来打出来了

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;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式