Zamiast lines.Take
można zamiast tego użyć, lines.Skip
jak:
var lines = File.ReadAllLines("test.txt");
File.WriteAllLines("test.txt", lines.Skip(1).ToArray());
obciąć na początku pomimo faktu, że zastosowana technika (czytaj cały tekst i pisać wszystko z powrotem) jest bardzo nieefektywne.
O skutecznym sposobie: Nieefektywność wynika z konieczności przeczytania całego pliku w pamięci. Na odwrót można łatwo wyszukać w strumieniu i skopiować strumień do innego pliku wyjściowego, usunąć oryginał i zmienić nazwę starego. Ten byłby równie szybki i jednocześnie zużywał znacznie mniej pamięci.
Skracanie pliku na końcu jest znacznie łatwiejsze. Możesz po prostu znaleźć pozycję cięcia i zadzwonić pod numer FileStream.SetLength()
.
Może nie odpowiedź, której szukasz, ale co powiesz na zamianę bajtów reprezentujących pierwszy wiersz na NULL? Następnym razem, gdy możesz File.ReadAllLines, pominiesz wszystkie początkowe bajty NULL. – Polity