Как исправить System.FormatException чтения данных из текстового файла в список - PullRequest
0 голосов
/ 24 декабря 2018

Мой код берет данные из формы приложения и отображает результат в списке и сохраняет данные в файл.Когда в следующий раз я загружаю код, он должен прочитать данные из файла и заполнить список.У меня есть строка ввода System.FormatException не в правильном формате.

Код работает, пока я не буду готов прочитать файл.Я удалил пробелы и знак доллара, но проблема все еще существует.Пожалуйста, оцените любую помощь.

Код класса My FileIO ниже

public static class FileIO
{
    const string path = "Customers.txt";

    // writes data from the array to the file
    public static void WriteData(List<Customer> customers)
    {
        FileStream fs = null;
        StreamWriter sw = null;
        try
        {
            // open the file for writing; overwrite old content

            fs = new FileStream(path, FileMode.Create, FileAccess.Write);
            sw = new StreamWriter(fs);
            // write data
            foreach (Customer item in customers)
                sw.WriteLine(item.DisplayCustomersInfo("|"));
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error while writing to the file: " +
                ex.Message, ex.GetType().ToString());
        }
        finally
        {
            if (sw != null) sw.Close(); // also closes fs
        }
    }

    // reads data from the file, puts in a list, and returns it
    public static List<Customer> ReadData()
    {
        List<Customer> customers = new List<Customer>();

        FileStream fs = null;
        StreamReader sr = null;
        string line; // for reading
        string[] columns; // result from splitting the line
                          // open the file for reading and read number into data
        try
        {
            fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
            sr = new StreamReader(fs);
            while (!sr.EndOfStream) // while there is data in the file
            {
                line = sr.ReadLine(); // read the next line
                line.Trim();
                columns = line.Split(','); // split line into substring from line with comma delimiters

                Customer c = new Customer(Convert.ToInt32(columns[0]), columns[1], Convert.ToChar(columns[2]),
                Convert.ToDecimal(columns[3].Remove(0, 1)));//this is where I think the problem is.

                               customers.Add(c);

            }
        }
        catch (FormatException)
        {
            MessageBox.Show("File contains bad format data. Aborting reading");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error while reading the file: "
                + ex.Message, ex.GetType().ToString());
        }
        finally
        {
            // close the file if open
            if (sr != null) sr.Close(); //file stream gets closed too
        }
        return customers;
    }
}

Ниже приведен текстовый файл.

12345 | RRRRR | R | $ 58.05

12345 | RRRRR | R | $ 58,05

12345 | RRRRR | R | $ 58,05

12345 | RRRRR | R | $ 58,05

12345 | RRRRR | R | $ 58,05

12345 | CCCCC | C | $ 60,05

12345 | CCCCC | C | $ 60,05

12345 | CCCCC | C | $ 60,05

12345 | CCCCC | C | $ 60,05

12345 | CCCCC | C | $ 60,05

12345 | IIIII | I | $ 116,09

12345 | IIIII | I | $ 116,09

12345 | IIIII | I| 116,09

12345 | IIIII | I | 116,09

12345 | IIIII | I | 116,09

12345 | IIIII | I | 116,09

Я использовал, а также ;в качестве разделителей перед использованием |.

Я ожидаю прочитать данные из файла, заполнить список и добавить дополнительные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...