Hallo Community,
ich habe eine List<String> mit mehreren Dateipfaden und ich würde gerade diese Dateien öffnen
und den Inhalt aller zusammen in eine neue Datei Schreiben.
Meine Idee war es mit Hilfe von einem StreamReader und einem StreamWriter in einer foreach-Schleife alles rauszuschreiben.
Jedoch krieg ich das nicht hin.
Habt ihr vielleicht Tipps oder andere Lösungsvorschläge?
Was hast Du denn bisher versucht? Wo kommst Du nicht weiter?
Mit "krieg ich nicht hin" können wir kaum helfen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ja tut mir leid. Hatte eine kurze denkblockade.
Ich hab es aber inzwischen so gelöst
StreamWriter sw = new StreamWriter(newGrpFileName);
foreach (string item in srcPaths)
{
filePath = item;
string srcContent= File.ReadAllText(item, Encoding.Default);
sw.WriteLine(srcContent);
}
Damit Du Dir das Encoding nicht verhaust (und Dich auch im nichts kümmern musst, kannst Du einfach mehrere Streams mergen.
Dazu gibts die CopyTo Methode. Und damit auch nichts blockiert gibts async/await und CopyToAsync
await using var targetStream = File.Create(targetFilePath).ConfigureAwait(false);
foreach (var filePath in filePathCollection)
{
await using var fileStream = File.OpenRead(filePath).ConfigureAwait(false);
await fileStream.CopyToAsync(targetStream).ConfigureAwait(false);
}
using bei Handle-Interaktionen nicht vergessen (oder manuell Disposen).
https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/using-statement
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code