2010-11-22 22 views
1

ich eine Textdatei mit diesem Inhalt habein eine Textdatei zu schreiben

balamurugan,rajendran,chendurpandian 
christopher 
updateba 

und ich diese Dateien gelesen und nach einem Stichwort gesucht ba und i in einer anderen Textdatei log.txt zu schreiben versucht, aber nach der Ausführung meines Code ich bin die dritte Zeile nur als immer

`LineNo : 2 : updateba` 

ich brauche beide diese Zeilen zu bekommen

LineNo : 0 : balamurugan,rajendran,chendurpandian 
LineNo : 2 : updateba 

ich diesen Code verwende in eine Textdatei

if (File.Exists(FilePath)) 
     { 
      // Read the file and display it line by line. 
      System.IO.StreamReader file = new System.IO.StreamReader(FilePath); 
      while ((line = file.ReadLine()) != null) 
      { 
       if (line.Contains(regMatch)) 
       { 
        DirectoryInfo Folder = new DirectoryInfo(textboxPath.Text); 
        if (Folder.Exists) 
        { 
         var dir = @"D:\New folder\log"; 
         if (!Directory.Exists(dir)) 
         { 
          Directory.CreateDirectory(dir); 
         } 
         File.WriteAllText(Path.Combine(dir, "log.txt"), "LineNo : " + counter.ToString() + " : " + line + "<br />"); 

        } 
        else 
        { 
         Response.Write("<script language='javascript'>window.alert('Folder not found');</script>"); 
        } 
        Response.Write("<script language='javascript'>window.alert('Pattern found');</script>"); 
        Response.Write("LineNo : " + counter.ToString()+ " : " + line + "<br />"); 
       } 

       else 
       { 
        Response.Write("<script language='javascript'>window.alert('Pattern not found');</script>"); 
       } 
       counter++; 


      } 
       file.Close(); 
     } 
     else 
     { 
      Response.Write("<script language='javascript'>window.alert('File not found');</script>"); 
     } 

ich diese Probe verwendet link text

Jeder Vorschlag haben zu schreiben ???

+0

es Nähte mit dem Encoding bis Sie verwirren. Force Encoding zu 'Default' oder' UTF-8' und Sie werden aufhören, diese Probleme zu haben – balexandre

Antwort

6

Sie rufen WriteAllText - diese überschreibt die Datei; vielleicht solltest du File.AppendAllText? Oder effiziente, verwenden Sie ein StreamWriter in erster Linie - dh

using (var dest = File.CreateText(path)) 
{ 
    while (loopCondition) 
    { 
     // snip 
     dest.WriteLine(nextLineToWrite); 
    } 
} 

Reduzierung den Code in der Frage etwas wie den minimalen Schlüsselcode, so etwas wie:

DirectoryInfo Folder = new DirectoryInfo(textboxPath.Text); 
var dir = @"D:\New folder\log"; 
if (Folder.Exists) 
{     
    if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); 
} 

if (File.Exists(FilePath)) 
{ 
    // Read the file and display it line by line. 
    using (var file = File.OpenText(FilePath)) 
    using (var dest = File.AppendText(Path.Combine(dir, "log.txt"))) 
    { 
     while ((line = file.ReadLine()) != null) 
     { 
      if (line.Contains(regMatch)) 
      { 
       dest.WriteLine("LineNo : " + counter.ToString() + " : " + 
        line + "<br />"); 
      } 
      counter++; 
     } 
    } 
} 
+0

@Marc Gravell können Sie ausführlich sagen, wo Sie diesen Code verwenden – bala3569

+0

@bala - Ich werde etwas bearbeiten in ... –

+0

@Marc Gravell haben verwendet ur-Code zu überschreiben, wie seine – bala3569

1

File.WriteAllText

Erstellt eine neue Datei, schreibt den Inhalt in die Datei und schließt dann die Datei. Wenn die Zieldatei bereits existiert, wird sie überschrieben.

Quelle. http://msdn.microsoft.com/en-us/library/system.io.file.writealltext.aspx

Sie möchten wahrscheinlich einen Puffer erstellen und den Puffer die Datei schreiben, nachdem Sie fertig sind.

bearbeiten verdammt es 20 Sekunden zu spät.

0

benötigen Sie AppendAllText

Verwandte Themen