using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ProcessRead().Wait();
}
static async Task ProcessRead()
{
await Task.Run(() =>
{
IEnumerable<string> fileEntries = Directory.EnumerateFiles(@"Directory");
int count = 0;
foreach (string fname in fileEntries)
{
try
{
count++;
string text = File.ReadAllText(fname);
Console.WriteLine(text);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Console.WriteLine(count);
});
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Это работает, но только для указанного каталога в EnumerateFiles. но я хочу, чтобы все файлы во всех каталогах были рекурсивными.
Например, если я помещаю каталог windows:
IEnumerable<string> fileEntries = Directory.EnumerateFiles(@"c:\windows");
, я хочу, чтобы он прочитал содержимое всех файлы в каталоге windows, а также во всех подкаталогах в windows. Таким образом, он будет читать все содержимое файлов в данном каталоге root и все его подкаталоги рекурсивно.
Теперь это код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Schema;
namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ProcessRead().Wait();
}
static async Task ProcessRead()
{
await Task.Run(() =>
{
IEnumerable<string> fileEntries = Directory.EnumerateFiles(@"Directory","", SearchOption.AllDirectories);
int count = 0;
foreach (string fname in fileEntries)
{
try
{
count++;
string text = File.ReadAllText(fname);
Console.WriteLine(text);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Console.WriteLine(count);
});
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
EnumerationOptions.RecurseSubdirectories не существуют конечно, если это потому, что я использую. net 4.7.2
Что я сделал не так, что EnumerationOptions.RecurseSubdirectories не существует?