读书人

如何遍历文件夹上面所有文件

发布时间: 2012-12-27 10:17:09 作者: rapoo

怎么遍历文件夹下面所有文件?


foldPath = dialog.SelectedPath;
this.label4.Text = foldPath;

DirectoryInfo TheFolder = new DirectoryInfo(foldPath);
fileName = Path.GetFileName(dialog.SelectedPath);//获取当前打开文件夹名称
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
this.listBox1.Items.Add(NextFile.Name);
string tempStr = File.ReadAllText(NextFile.FullName, Encoding.GetEncoding("GB2312"));//读取txt内容
this.richTextBox1.Text = tempStr;
}

这个方法就只能遍历第一个文件的所有内容,我用listBox1显示出了所有的文件名称,请问下要怎么遍历全部文件呢?
[解决办法]
http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html
[解决办法]

private void ScanAllFolder(string pathName)
{
try
{
if (!Directory.Exists(pathName))
{
return;
}

DirectoryInfo processDirectory = new DirectoryInfo(pathName);

FileSystemInfo[] fileSystemInfos = processDirectory.GetFileSystemInfos();

foreach (FileSystemInfo fileSystemInfo in fileSystemInfos)
{
if (fileSystemInfo is DirectoryInfo &&

fileSystemInfo.Attributes != FileAttributes.Hidden &&



fileSystemInfo.Attributes != FileAttributes.System)
{
DirectoryInfo directoryInfo = (DirectoryInfo)fileSystemInfo;

this.ScanAllFolder(directoryInfo.FullName);
}
else if (fileSystemInfo is FileInfo &&

fileSystemInfo.Attributes != FileAttributes.Hidden &&

fileSystemInfo.Attributes != FileAttributes.System)
{
FileInfo fileInfo = (FileInfo)fileSystemInfo;

//处理单个文件
}
}
}
catch (Exception ex)
{
//Debug.Assert(false, ex.Message);
}
}


[解决办法]
    using System;  
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;

namespace ConsoleApplication6
{


class GetFilePath
{
private ArrayList dirs;

/// <summary>
/// 构造函数
/// </summary>
public GetFilePath()
{
dirs = new ArrayList();
}


/// <summary>
/// 获取所有文件
/// </summary>
/// <param name="rootPath">文件夹路径</param>
/// <returns>所有文件路径集合</returns>
public ArrayList GetAllFileName(string rootPath)
{
dirs.Add(rootPath);
GetDirs(rootPath);
object[] allDir = dirs.ToArray();

ArrayList list = new ArrayList();

foreach (object o in allDir)
{
list.AddRange(GetFileName(o.ToString()));
}

return list;
}

/// <summary>
/// 获取文件名
/// </summary>
/// <param name="dirPath">文件夹路径</param>


/// <returns>文件路径集合</returns>
private ArrayList GetFileName(string dirPath)
{
ArrayList list = new ArrayList();

if (Directory.Exists(dirPath))
{
list.AddRange(Directory.GetFiles(dirPath));
}
return list;
}

/// <summary>
/// 获取所有文件夹路径
/// </summary>
/// <param name="dirPath">文件夹路径</param>
private void GetDirs(string dirPath)
{

if (Directory.GetDirectories(dirPath).Length > 0)
{
foreach (string path in Directory.GetDirectories(dirPath))
{
dirs.Add(path);
GetDirs(path);
}
}
}


}
}


[解决办法]

DirectoryInfo folder = new DirectoryInfo(@"D:\");


if (!folder.Exists)
throw new DirectoryNotFoundException("该文件不存在");

//遍历该文件夹下面的子文件夹
Console.WriteLine("DirectoryInfo");
foreach (DirectoryInfo item in folder.GetDirectories())
Console.WriteLine(item.Name);

Console.WriteLine();
Console.WriteLine("FileInfo");
//遍历该文件夹下面的文件
foreach (FileInfo item in folder.GetFiles())
{
Console.WriteLine(item.Name);
Console.WriteLine(File.ReadAllText(item.FullName, Encoding.GetEncoding("GB2312")));
}

Console.Read();

读书人网 >C#

热点推荐