Il titolo dice tutto - Sto provando a rimuovere ogni riga da un file che contiene la stringa "PresenceManager". Per prima cosa cerco attraverso il file, rimuovendo qualsiasi istanza della stringa. Tuttavia, questo lascia un TON di righe vuote, quindi devo andare e rimuovere quelli con un altro blocco di codice. Questo sembra un bel po 'di codice per fare un compito apparentemente facile. È il loro modo di abbreviare / ottimizzare questo?
public static void checkDirtyLogs(Skype s, Form1 f1)
{
foreach (string log in Directory.GetFiles(f1.path, "debug*.log"))
{
string[] currentFile = File.ReadAllLines(log);
for (int i = 0; i < currentFile.Length - 1; i++)
{
if (!currentFile[i].Contains("PresenceManager"))
{
currentFile[i] = "";
}
}
File.WriteAllLines(log, currentFile);
var tempFileName = Path.GetTempFileName();
try
{
using (var streamReader = new StreamReader(log))
using (var streamWriter = new StreamWriter(tempFileName))
{
string line;
while ((line = streamReader.ReadLine()) != null)
{
if (!string.IsNullOrWhiteSpace(line))
streamWriter.WriteLine(line);
}
}
File.Copy(tempFileName, log, true);
}
finally
{
File.Delete(tempFileName);
}
}
} //Clean logs