2010-11-22 3 views
1

У меня есть текстовый файл с этим содержимымзаписи в текстовый файл

balamurugan,rajendran,chendurpandian 
christopher 
updateba 

и я прочитал эти файлы и поиска по ключевому слову ba и я пытался написать в другом текстовом файле log.txt, но после выполнения моих код я получаю третью строчку только

`LineNo : 2 : updateba` 

Мне нужно, чтобы обе эти линии

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

Я использую этот код для записи в текстовый файл

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>"); 
     } 

я использовал этот образец link text

Любое предложение ???

+0

швы вы Мессинг с кодировкой. force Кодирование в 'Default' или' UTF-8', и вы перестанете испытывать эти проблемы. – balexandre

ответ

6

Вы звоните WriteAllText - этот перезаписывает файл; возможно, вам стоит File.AppendAllText? Или, более эффективно, использовать StreamWriter в первую очередь - т.е.

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

Сокращение кода в вопросе что-то как минимальный код ключа, что-то вроде:

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 может рассказать подробно, где использовать этот код. – bala3569

+0

@bala - я что-то отредактирую ... –

+0

@Marc Gravell есть используется ур код его перезапись как – bala3569

1

File.WriteAllText

Создает новый файл, записывает содержимое в файл и затем закрывает файл. Если целевой файл уже существует, он перезаписывается.

Источник. http://msdn.microsoft.com/en-us/library/system.io.file.writealltext.aspx

Возможно, вы захотите создать буфер и написать буфер после завершения.

отредактируйте damn it 20 seconds too late.

Смежные вопросы