简体   繁体   中英

Writing to temp array from text file

I asked this before but most people don't understand my question.

I have two text files. Gamenam.txt which is the text file I'm reading from, and gam enam_2.txt .

In the gamenam.txt I have strings like this:

01456
02456
05215
05111
01421
03117
05771
01542
04331
05231

I have written a code to count number of times substring "05" appears in text file before substring "01" .

My output which is written to gamenam_1.txt is:

01456
02456
05215
05111
2
01421
03117
05771
1
01542
04331
05231
1

This was the code I wrote to achieve

string line;
int counter = 0;
Boolean isFirstLine = true;
try
{
    StreamReader sr = new StreamReader("C:\\Files\\gamenam.txt");
    StreamWriter sw = new StreamWriter("C:\\Files\\gamenam_1.txt");

    while ((line = sr.ReadLine()) != null)
    {
        if (line.Substring(0, 2) == "01")
        {
            if (!isFirstLine)
            {
                sw.WriteLine(counter.ToString());
                counter = 0;
            }
        }

        if (line.Substring(0, 2) == "05")
        {
            counter++;
        }

        sw.WriteLine(line);

        if (sr.Peek() < 0)
        {
            sw.Write(counter.ToString());
        }

        isFirstLine = false;
    }

    sr.Close();
    sw.Close();
}
catch (Exception e)
{
    Console.WriteLine("Exception: " + e.Message);
}
finally
{
    Console.WriteLine("Exception finally block.");
}

That code is working perfectly.

Now I have to write a code to print the count of substring "05" before writing lines .

My output should look something like this:

2
01456
02456
05215
05111
1
01421
03117
05771
1
01542
04331
05231

Apparently I should write the lines first to temporary string array, the count and then write count and then after write lines from my temporary array.

I'm new to development so I'm stuck trying to figure out how I'd achieve this.

Any help will highly be appreciated.

Try this

string line;
int counter = 0;
Boolean isFirstLine = true;
try
{
    StreamReader sr = new StreamReader("C:\\Files\\gamenam.txt");
    StreamWriter sw = new StreamWriter("C:\\Files\\gamenam_1.txt");

    var lines = new List<string>(); //Here goes the temp lines
    while ((line = sr.ReadLine()) != null)
    {
        if (line.Substring(0, 2) == "01")
        {
            if (!isFirstLine)
            {
                sw.WriteLine(counter.ToString()); //write the number before the lines
                foreach(var l in lines)
                    sw.WriteLine(l);  //actually write the lines
                counter = 0;
                lines.Clear(); //clear the list for next round
            }
        }

        if (line.Substring(0, 2) == "05")
        {
            counter++;
        }

        lines.add(line); //instead of writing, just adds the line to the temp list

        if (sr.Peek() < 0)
        {
            sw.WriteLine(counter.ToString()); //writes everything left
            foreach(var l in lines)
                sw.WriteLine(l);
        }

        isFirstLine = false;
    }

    sr.Close();
    sw.Close();
}
catch (Exception e)
{
    Console.WriteLine("Exception: " + e.Message);
}
finally
{
    Console.WriteLine("Exception finally block.");
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM