Я пытаюсь удалить некоторые нежелательные предложения (в данном случае предложения с менее чем 6 словами) из разных локальных файлов и сохранить очищенные тексты в другой набор файлов. Поэтому я пытаюсь читать каждый файл в папке один за другим и записывать все допустимые предложения в другой набор файлов, расположенных в другой папке. В настоящее время я использую этот код:Как удалить нежелательные предложения из файла
int shortphrasescount = 0;
var myUniquefilename = string.Format(@"{0}.txt", Guid.NewGuid());
string[] files = Directory.GetFiles(@"C:\input\")
.Where(p => p.EndsWith(".txt"))
.ToArray();
foreach (var file in files)
{
StreamReader reader = new StreamReader(file);
StreamWriter writer = new StreamWriter(@"C:\output\" + myUniquefilename);
writer.Flush();
var list = new List<string>();
string line;
while ((line = reader.ReadLine()) != null)
{
list.Add(line);
}
string[] sentences = list.ToArray();
foreach (var sentence in sentences)
{
int NumberOfWords = sentence.Split(' ').Length;
if (NumberOfWords < 6)
{
shortphrases += 1;
}
else
{
writer.WriteLine(sentence);
}
}
writer.Close();
reader.Close();
}
Console.WriteLine("Deleted a total of " + shortphrasescount + " short phrases!");
Но этот путь я только управлять, чтобы сохранить последний обработанный документ вместо того, чтобы иметь несколько очищенных текстовых файлов в качестве выходного сигнала. Что я здесь делаю неправильно?
Заранее спасибо.
Не следует ли вызов «SaveToFile()» или некоторые такие где-нибудь? –
Вы используете одно и то же имя файла для каждого обрабатываемого файла - вы его никогда не изменяете. Кроме того, вам не нужно вызывать 'ToArray()' - вы можете использовать 'foreach' в' List 'просто как массив. –
Tim
Проверьте эти два метода: [ReadAllLines] (https://msdn.microsoft.com/en-us/library/s2tte0y1 (v = vs.110) .aspx) и [WriteAllLines] (https://msdn.microsoft. ком/EN-US/библиотека/92e05ft3 (v = vs.110) .aspx). Они могут помочь вам сделать код более читаемым. –