Editing a text file using visual C#

Discussion in 'C#' started by uzairfarooq, Jan 13, 2009.

  1. #1
    I had a text file log.txt and want to replace lines 3,6,9,12....... with "0". Suppose I have x no of lines in file "C:/log.txt", that is written using C#, and want to edit line no's that are divisible by 3 i.e 3,6,9,12,15.....,x.
    Any Code?
    :)
     
    uzairfarooq, Jan 13, 2009 IP
  2. lofvenhamn

    lofvenhamn Peon

    Messages:
    34
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Hi there,

    Since you've written the file in C# I assume you already know how to open and write the actual text file. To find the row divisable by 3 when you loop through the lines in the file, use the modulus operator: %.

     
    lofvenhamn, Jan 13, 2009 IP
  3. uzairfarooq

    uzairfarooq Peon

    Messages:
    25
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    I had written the file using C# but unable to edit the specific lines.
    Could you provide me the full code?
    Plz
    :)
     
    uzairfarooq, Jan 14, 2009 IP
  4. Duka

    Duka Peon

    Messages:
    1
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #4
    Here
    
    int "line count"; //enter number of lines in txt file
    StreamWriter sw = new StreamWriter("log.txt", true);
    for (int i = 0; i < line count; i++)
    { 
       if (line count % 3 == 0)
             sw.WriteLine("0");
    }
    sw.Flush();
    sw.Close();
    
    Code (markup):
     
    Duka, Jan 18, 2009 IP
  5. uzairfarooq

    uzairfarooq Peon

    Messages:
    25
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    but it does not overwrite lines. it writes new lines.
    I want to replace every third line.
    :)
     
    uzairfarooq, Jan 21, 2009 IP
  6. andyj00

    andyj00 Active Member

    Messages:
    532
    Likes Received:
    3
    Best Answers:
    0
    Trophy Points:
    58
    #6
    This will work fine. It reads the contents of your file into an Arraylist, then writes it back out, missing out every 3rd row :)

    
                ArrayList al = new ArrayList();
                string filename = @"c:\log.txt";
    
                using (StreamReader sr = new StreamReader(filename))
                {
                    string line;
                    
                    while ((line = sr.ReadLine()) != null)
                    {
                        al.Add(line);
                    }
                    sr.Close();
                }
    
                using (StreamWriter sw = new StreamWriter(filename))
                {
                    int lineCount = 1;
    
                    foreach (String str in al)
                    {
                        if (lineCount % 3 == 0)
                            sw.WriteLine("0");
                        else
                            sw.WriteLine(str);
    
                        ++lineCount;
                    }
                    sw.Close();
                }
    
    Code (markup):
     
    andyj00, Jan 26, 2009 IP