Ошибка System.ArgumentException: "Поток был недоступен для чтения." - C#

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

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

using System.IO;
 
namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            double p = 0, i=0;
            FileStream file1 = new FileStream("C://temp//file1.txt", FileMode.Open);
            StreamReader s = new StreamReader(file1, Encoding.Default);
            FileStream file2 = new FileStream("C://temp//file2.txt", FileMode.Create);
            StreamWriter q = new StreamWriter(file2);
            while (!s.EndOfStream)
            {
                string sk = s.ReadLine();
                string[] arr = sk.Split('|');
                p += Convert.ToDouble(arr[1]);
                i++;
            }
            double sr = p / i;
            s.Close();
            StreamReader l = new StreamReader(file1, Encoding.Default); //здесь выводить ошибку
            while (!s.EndOfStream)
            {
                string st = s.ReadLine();
                string[] array = st.Split('|');
                double a = Convert.ToDouble(array[1]);
                if (a > sr)
                    q.WriteLine(st);
            };
            q.Close();
            s.Close();
            l.Close();
        }
    }
}
Вот текст из file1: Gelz |5 Nevelson |3 Grimp |3 Brown |4 Harris |5 Lee |2 Lewis |4 Walker |5 Phillips |4

Решение задачи: «Ошибка System.ArgumentException: "Поток был недоступен для чтения."»

textual
Листинг программы
static void Main(string[] args)
{
    double p = 0;
    int i = 0;
 
    StreamReader reader = new StreamReader(@"C:\temp\file1.txt", Encoding.Default);
    while (!reader.EndOfStream)
    {
        string line = reader.ReadLine();
        string[] arr = line.Split('|');
        p += Convert.ToDouble(arr[1]);
        i++;
    }
    double sr = p / i;
    reader.Close();
 
    StreamWriter writer = new StreamWriter(@"C:\temp\file2.txt", Encoding.Default);
    reader = new StreamReader(@"C:\temp\file1.txt", Encoding.Default);
    while (!reader.EndOfStream)
    {
        string line = s.ReadLine();
        string[] array = line.Split('|');
        double a = Convert.ToDouble(array[1]);
        if (a > sr)
        {
            writer.WriteLine(line);
        }
    }
    reader.Close();
    writer.Close();
}

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


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

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

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