Не удается получить пользовательский ввод для записи в мой текстовый файл в C# (ошибка говорит о том, что путь не доступен, потому что он уже используется) - PullRequest
1 голос
/ 17 марта 2020

Я в растерянности относительно того, что еще я могу сделать здесь. Я пытался использовать пространство имен StreamReadWrite, но это не сработало. Я пытался использовать file.Close (); в разных областях, но больше всего получилось бы, если бы я написал «Успех» в консоли, из моего списка ничего не отображалось, а текстовый файл был полностью пустым. Я не уверен, что я делаю несколько небольших ошибок, но я работал над этим в течение нескольких дней и просто не могу получить пользовательский ввод для записи в файл. Любая помощь абсолютно ценится! Я написал заметки, которые, я надеюсь, достаточно хорошо объяснят, на что ссылается каждая часть моего кода.

     public void writeReadTextFile(Car c) //another form is passing the user input into my list Car to this function
    {
        try
        {
            //string variables are all members of Car class
            String vin;
            String make;
            String model;
            String year;
            String color;
            char delim = ',';

            StreamWriter fileWrite = new StreamWriter("../../Resources/CarInfo.txt");

            foreach (Car car in myCars)
            {
                fileWrite.WriteLine(car.getVin());
                fileWrite.Write(delim); //all attributes separated by comma in text file
                fileWrite.Write(car.getMake());
                fileWrite.Write(delim);
                fileWrite.Write(car.getModel());
                fileWrite.Write(delim);
                fileWrite.Write(car.getYear());
                fileWrite.Write(delim);
                fileWrite.Write(car.getColor());
            }
            StreamReader file = new StreamReader("../../Resources/CarInfo.txt");

            String line = file.ReadLine();
            int comma;
            Car newCar;

            while (line != null)
            {
                //parsing data from text file which works when information is manually entered into text file
                comma = line.IndexOf(delim);
                vin = line.Substring(0, comma);
                line = line.Substring(comma + 1);

                comma = line.IndexOf(delim);
                make = line.Substring(0, comma);
                line = line.Substring(comma + 1);

                comma = line.IndexOf(delim);
                model = line.Substring(0, comma);
                line = line.Substring(comma + 1);

                comma = line.IndexOf(delim);
                year = line.Substring(0, comma);
                line = line.Substring(comma + 1);

                color = line;

                newCar = new Car(vin, make, model, year, color);

                myCars.Add(newCar);

                line = file.ReadLine();
                Console.WriteLine(line);
            }

            Console.WriteLine("Success"); // test

        }
        catch (Exception e)
        {
            Console.WriteLine("Error loading file: " + e.Message);
        }

    }

1 Ответ

0 голосов
/ 17 марта 2020

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

Не делайте этого

StreamWriter fileWrite = new StreamWriter(...)

Всегда используйте используя оператор для IDisposable, когда это возможно, или (если вам действительно нужно) вызвать Close / Dispose вручную. В свою очередь это (в данном случае) закрывает поток и удаляет объект, освобождая операционную систему дескриптор файла (что, скорее всего, является вашей проблемой)

using(StreamWriter fileWrite = new StreamWriter(...))
{
    // code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...