Я пишу программу, где есть папка с очень большим количеством файлов (более тысячи). Мне нужен эффективный способ «открыть каждый файл и обработать его». Обработка включает вызов базы данных хранимые процедуры, в зависимости от содержания file.i написали следующий код, чтобы прочитать содержимое каждого file.Please дайте мне знать, если какое-либо улучшение или альтернативные варианты.Обработка большого количества файлов C#
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Security;
using System.Threading;
using System.Threading.Tasks;
using System.Text;
using System.Collections;
class Program
{
static void Main()
{
ProcessRead().Wait();
Console.Write("Done ");
Console.ReadKey();
}
static async Task ProcessRead()
{
var sw = Stopwatch.StartNew();
string folder = @"Directory";
string[] fileEntries = Directory.GetFiles(folder);
int count = 0;
foreach (string fname in fileEntries)
{
if (File.Exists(fname) == false)
{
Console.WriteLine("file not found: " + fname);
}
else
{
try
{
count++;
string text = await ReadTextAsync(fname);
Console.WriteLine(text);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Console.WriteLine("Elapsed Time" + sw.ElapsedMilliseconds);
Console.WriteLine(count);
}
static async Task<string> ReadTextAsync(string filePath)
{
using (FileStream sourceStream = new FileStream(filePath,
FileMode.Open, FileAccess.Read, FileShare.Read,
bufferSize: 4096, useAsync: true))
{
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[0x1000];
int numRead;
while ((numRead = await sourceStream.ReadAsync(buffer, 0, buffer.Length)) != 0)
{
string text = Encoding.UTF8.GetString(buffer, 0, numRead);
sb.Append(text);
}
return sb.ToString();
}
}
}
Поскольку это рабочий код, который вы хотите обзор, вы будете иметь больше удачи над на [Обзор] Код (http://codereview.stackexchange.com) - Тем не менее, пожалуйста, потратить немного времени должным образом форматирования вашего кода и сообщения, прежде чем делать это. – Rob
Да, обзор кода - лучшее место, чтобы спросить. Убедитесь, что вы включили код, который вызывает хранимую процедуру, иначе они не смогут предоставить ответ (и вопрос может быть закрыт). – Alexei
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он относится к Code Review stackexchange. –