Можно ли сначала прочесть файл, а потом открыть его в потоке - C#

Узнай цену своей работы

Формулировка задачи:

Чувствую, что путаюсь в многочисленных классах файлов/потоков. Пробовал и так и этак - либо выдаст написанное мной общее исключение, либо сделает всё для двух строчек (одной итерации) и зависает. Строк в файле 12 - через одну идут строки с целыми числами, разделённые пробелами. В коде, если не говорить огульно, мне не нравится, что у меня файл сначала открывается для считывания содержимого в массив строк, а потом открывается в потоке - может быть в этом ошибка.
                    string[] fullLine = File.ReadAllLines("C://Work c//Cardial.txt", Encoding.Default);
 
                    string newTempLine = "hjxyjtrjjsgf";
 
                    int c = -1;
 
                    FileStream strm = File.Open(@"C:\Work c\Cardial.txt", FileMode.Create, FileAccess.Write);
                    StreamWriter writer = new StreamWriter(strm);
                    if (strm != null)
                    {
                        /*for (int i = 1; i < 12; i += 2)
                        {
                            c += 2;
                            string[] tempLine = fullLine[i].Split(' ');
                            //if (i == 1) MessageBox.Show("{0}", tempLine.ToString());
                            //newFullLine = new string[tempLine.Length];
                            foreach (string s in tempLine)
                            {
                                newTempLine += "drabadan";//(int.Parse(s) + rnd.Next(12, 120)).ToString();
                                newTempLine += " ";
                            }
                            //if(i==1) MessageBox.Show("{0}", newTempLine);*/
                            writer.WriteLine("#{0}", c);
                            writer.WriteLine(newTempLine);
 
                            //foreach (string s in newTempLine)
                            //sw2.WriteLine(newTempLine);
                        //}
                        writer.Flush();
                    }
                    writer.Close();

Решение задачи: «Можно ли сначала прочесть файл, а потом открыть его в потоке»

textual
Листинг программы
string fileName = @"P:\321\Cardial.txt";
string tempName = Path.Combine(
    Path.GetDirectoryName(fileName),
    string.Format(@"{0}.txt", Guid.NewGuid()));
 
using (var sr = new StreamReader(fileName))
using (var wr = new StreamWriter(tempName))
{
    Random rnd = new Random();
    int counter = 0, iNum;
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        if (counter++ % 2 == 0) continue;
 
        wr.WriteLine("#{0}", counter); // тут я не знаю что нужно выводить в задаче
 
        string[] nums = line.Split((string [])null, StringSplitOptions.RemoveEmptyEntries);
        foreach (var sNum in nums)
        {
            if (int.TryParse(sNum, out iNum))
            {
                wr.Write(iNum + rnd.Next(12, 120));
                wr.Write(" ");
            }
        }
        wr.WriteLine();
    }
}
File.Delete(fileName);
File.Move(tempName, fileName);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы