private void ForeachFiles(string path,bool isOne,string tempFile)
{
DirectoryInfo theFolder = new DirectoryInfo(path);//path 选择文件夹路径
DirectoryInfo[] dirInfo = theFolder.GetDirectories();//获取所在目录的文件夹
FileInfo[] file = theFolder.GetFiles();//获取所在目录的文件
int successCount = allCount;//共几次进度条改变,根据文件数量来
if (isOne)//判断是否是第一次进入
{
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
tempFile = this.textBox1.Text + @"/" + Convert.ToInt64(ts.TotalSeconds).ToString() + ".txt";//生成一个路径
}
string str = "";
foreach (FileInfo fileItem in file) //遍历文件
{
var fileName = fileItem.Name;//文件名字
var dirName = fileItem.DirectoryName;//文件所在文件夹路径
var sReader = fileItem.OpenText();
str += "#"+fileName + "\n" + sReader.ReadToEnd();//读取文件名称+读取文件内容,字符串
sReader.Close();//记得关闭
}
//判断文件是否存在
if (!File.Exists(tempFile))
{
//如果不存在就创建文件
try
{
File.Create(tempFile).Close();
}
catch (Exception e)
{
}
}
//内容不为空时才往文本中添加内容
if(!string.IsNullOrEmpty(str)){
//写入数据到文本中,每次都是在原数据基础上内容累加
FileStream fs = new FileStream(tempFile, FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(str);
sw.Close();
fs.Close();
}
//遍历文件夹
foreach (DirectoryInfo NextFolder in dirInfo)
{
ForeachFiles(NextFolder.FullName,false, tempFile);//运用递归,有多少个文件夹就循环几次
}
}