Jag har en fil som ser ut på detta vis Om du har en fil som alltid skall tas bort första raden samt andra raden (den med alla "-") samt den sista raden (rows affected) kan du använda följande kod: Cecilias lösning kommer nog fungera bra, men.. Det finns några nackdelar som kan vara bra att känna till: Tack du är en ängel! <b>>Cecilias lösning har dock en fördel: hastigheten. Där sker läsning först, skrivning sedan. Hårddisken behöver då inte förflytta huvudet så ofta. </b> Mjao, det beror på storleken. På stora filer, och man har mycket ram-minne, så är det nog snabbare att läsa så mycket som möjligt innan skrivning.Ta bort rader ur fil
<code>
-----------------------------------------
12;20091;1;J”r...
12;20091;1;Kri...
12;20091;1;Hj”...
12;20091;1;LŽR...
12;20091;1;;SVE...
12;20091;1;LOK...
12;20091;1;OSA...
12;20091;1;;HAN...
12;20091;1;;ERI...
(17313 rows affected)
</code>
Jag vill nu ta bort följande rader:
1. Den första tomma raden
2. Den andra raden som innehåller alla "-" (variabelt antal "-")
3. raden som det står (17313 rows affected), denna kan givetvis innehålla andra siffror
Jag vill helt enkelt öppna filen radera det jag ska och sedan stänga den.
Det ska göras i c# (vs2008)
Tack på förhandSv: Ta bort rader ur fil
string[] stringArray = System.IO.File.ReadAllLines(pathToFile);
List<string> stringList = new List<string>(System.IO.File.ReadAllLines(""));
stringList.RemoveRange(0,2);
stringList.RemoveAt(stringList.Count-1);
System.IO.File.WriteAllLines(pathToNewFile,stringList.ToArray());
om inte det är alltid så att två första och sista som skall bort kan du jobba med arrayen och plocka bort de rader som du inte vill ha innan du använder WriteAllLines.
Sv:Ta bort rader ur fil
1) Den skapar en ny fil, om den skriver över den gamla så finns det ingen backup utifall att det skiter sig mitt under skrivningen
2) Om det handlar om en stor fil så kan den äta mycket minne, hela filen måste läsas in i minnet innan skrivning.
En annan lösning, dock lite längre att skriva, är att läsa rad för rad och titta på innehållet, för att sedan skriva ner det till en ny fil. Efter slutförd skrivning tar man sedan bort originalet och döper om den nya. (Det sista steget går dock att applicera på Cecilias lösning, problemet med minnesmängden kvarstår dock.)
Cecilias lösning har dock en fördel: hastigheten. Där sker läsning först, skrivning sedan. Hårddisken behöver då inte förflytta huvudet så ofta.
Fördelar och nackdelar..Sv:Ta bort rader ur fil
Edit: Oscar, det är ingen fara om filen försvinner, det är bara att köra om den då och filerna är ganska stora, den största jag sett är på 133 MB men normal ligger dom på ca 20-40Sv: Ta bort rader ur fil
Tveksam till detta påståendet. Dels sker en viss schemaläggning, dels är hårddiskarna ordentligt smarta nu för tiden, och dels så blandas det ändå med flera andra samtida läsningar/skrivningar.
Min gissning är snarare att om det är någon skillnad så är din lösning snabbare.Sv:Ta bort rader ur fil