Свежий взгляд на код чтения файла - C#

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

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

чтение из файла, был код
 String fileName = @"..\..\in.csv";
            if (!File.Exists(fileName))
            {
                Console.WriteLine("No file {0} in program directory", fileName);
                Console.Read();
                return;
            }
            var lines = File.ReadAllLines(fileName);
 
            string[][] text = new string[lines.Length][];
            for (var i = 0; i < text.Length; i++)
            {
                text[i] = lines[i].Split(';');
            }
 
            //Цикл по строкам
            foreach (string[] line in text)
            {
                //Цикл по словам в строке
                foreach (var s in line)
                {
                }
            }
читало сразу, не устраивает преподавателя, требует чтобы читало построчно ибо может быть огромный файл и я так полагаю что должно быть ограничение по строкам получил код
int counter = 0;
            string lines="";
            StreamReader file = new StreamReader(@"..\..\in.csv");
            
            while ((lines = file.ReadLine()) != null)
            {
                System.Console.WriteLine(lines);
                counter++;
            } 
 
            string[][] text = new string[lines.Length][];
            for (var i = 0; i < text.Length; i++)
            {
                text[i] = lines[i].Split(';');
            }
 
            //Цикл по строкам
            foreach (string[] line in text)
            {
                //Цикл по словам в строке
                foreach (var s in line)
                {
                }
            }
не знаю правильный ли код, но теперь ругается на

.Split(';');

хотя до этого все было впорядке

Решение задачи: «Свежий взгляд на код чтения файла»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace преобразование_в_массив
{
    class Program
    {
        static void Main(string[] args)
        {
           // int counter = 0;
          //  var lines="";
          //  var te = "";
          //  string n ="\n";
          //  StreamReader file = new StreamReader(@"..\..\in.csv");
            String fileName = @"..\..\in.csv";
            if (!File.Exists(fileName))
            {
                Console.WriteLine("No file {0} in program directory", fileName);
                Console.Read();
                return;
            }
            //while (( lines = file.ReadLine()) != null)
            //{
            //    te =n+te+lines;
            //    System.Console.WriteLine(lines);
            //    counter++;
            //}
            var lines="";
 
 
           // var lines = File.ReadAllLines(fileName);
 
            foreach (string line in File.ReadLines(fileName))
            {
                if (line != null)
                {
                    lines = lines + line;
                    Console.WriteLine(line);
                }
            }
 
 
            string[][] text = new string[lines.Length][];
            for (var i = 0; i < text.Length; i++)
            {
               text[i] = lines[i].Split(";");
            }
 
            //Цикл по строкам
            foreach (string[] line in text)
            {
                //Цикл по словам в строке
                foreach (var s in line)
                {
                }
            }
 
            double r = 0.0;//значения
            double sum = 0;//сумма
            int y = 0;
            int x;
            int errors = 0;//errors
            int one = 7;// первая запись с данной позиции(знак "-" без пробела)
 
            StringBuilder sb = new StringBuilder("result(");
            for (x = 0; x < text.Length; x++)
            {
                try
                {
                    y = int.Parse(text[x][0]);
                    if (text[x][y] == "-")
                    {
                        x += 1;
                        r = double.Parse(text[x][0]);
                        r *= -1;
                        goto l1;
                    }
                    r = double.Parse(text[x][y]);
 
                }
                catch (FormatException)
                {
                    errors += 1;
                    continue;
                }
                catch (IndexOutOfRangeException)
                {
                    errors += 1;
                    continue;
                }
            l1:
                sum += r;
                if (sb.Length == one)   //х == 0, если первое
                {
                    sb.Append(r);
                    continue;
                }
                if (r >= 0)//если положительное
                { sb.Append(" + " + r); }
 
                if (r < 0)//отрицательное
                {
                    r *= -1;
                    sb.Append(" - " + r);
                }
            }
            sb.Append(") = " + sum);
            sb.Append(" \nerror-lines = " + errors);
            Console.WriteLine(sb);//вывод строки
            System.Console.ReadKey();
        }
    }
}

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


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

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

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