2011-08-18 2 views

Répondre

5
string[] fileLines = File.ReadAllLines(@"your file path"); 

var result = fileLines.Skip(4).Take(fileLines.Length - (4 + 6)); 

File.WriteAllLines(@"your output file path", result); 
+1

Pour être complet, il faut mentionner que 'Skip' et' Take' sont des extensions Linq. – Mrchief

+0

Vous êtes invités à modifier :) –

1

StreamReader.ReadLine() lit fichier ligne par ligne et vous pouvez construire un tableau de chaînes à partir du fichier. Puis supprimez les quatre premières lignes et les 6 dernières lignes du tableau. Et avec StreamWriter.WriteLine() vous pouvez remplir le nouveau fichier ligne par ligne en prenant votre tableau. Devrait être assez simple.

3

Ne semble pas être le chemin le plus court ... mais cela fonctionne pour moi ... J'espère que cela donne un aperçu.

 System.IO.StreamReader input = new System.IO.StreamReader(@"originalFile.txt"); 
     System.IO.StreamWriter output = new System.IO.StreamWriter(@"outputFile.txt"); 

     String[] allLines = input.ReadToEnd().Split("\n".ToCharArray()); 

     int numOfLines = allLines.Length; 
     int lastLineWeWant = numOfLines - (6);     //The last index we want. 

     for (int x = 0; x < numOfLines; x++) 
     { 
      if (x > 4 - 1 && x < lastLineWeWant) //Index has to be greater than num to skip @ start and below the total length - num to skip at end. 
      { 
       output.WriteLine(allLines[x].Trim()); //Trim to remove any \r characters. 
      } 
     } 

     input.Close(); 
     output.Close(); 
0

Voici la meilleure façon de le faire en VB.NET:

Private Sub ReplaceString() 
    Dim AllLines() As String = File.ReadAllLines("c:\test\myfile.txt") 
    For i As Integer = 0 To AllLines.Length - 1 
     If AllLines(i).Contains("foo") Then 
      AllLines(i) = AllLines(i).Replace("foo", "boo") 
     End If 
    Next 
    File.WriteAllLines("c:\test\myfile.txt", AllLines) 
End Sub