Завершение работы программы не работает - PullRequest
2 голосов
/ 12 декабря 2011

Я работаю над небольшой программой для банкоматов, и я застрял на StreamWritter проблеме. При загрузке моя программа должна использовать StreamReader для чтения 4 файлов .txt, которые находятся в моей папке bin / debug. Затем пользователю предлагается либо внести, либо снять деньги с банковских счетов, расположенных в файлах .txt. Все отлично работает для StreamReader , который загружает все банковские счета при загрузке программы, и для StreamWriter для записи изменений в файлы .txt при добавлении / удалении денег. Моя проблема в том, что когда я закрываю программу, загрузка файлов работает нормально, но я больше не могу писать в файлы. Мой StreamWriter переходит прямо к части Catch и не может быть создан. Как это возможно, если с первого раза все заработало? Вот код StreamReader Код:

    public bool ReadSavingAccount()
    {
        string strLine;
        string[] strArray;
        char[] charArray = new char[] { ',' };
        FileStream aFile;
        StreamReader sr;
        try
        {
            aFile = new FileStream("mySavingAccount.txt", FileMode.Open);
            sr = new StreamReader(aFile);

            strLine = sr.ReadLine();
            while (strLine != null)
            {
                strArray = strLine.Split(charArray);
                Savings monSave = new Savings(strArray[0], Convert.ToDouble(strArray[1]));
                mySavingAccount.Add(monSave);
                strLine = sr.ReadLine();
            }
            sr.Close();
            aFile.Close();
        }
        catch
        {
            return false;
        }

        return true;
    }

И StreamWrite Код:

    public bool WriteSavingAccount()
    {
        FileStream aFile;
        StreamWriter sw;
        string myString;

        try
        {
            aFile = new FileStream("mySavingAccount.txt", FileMode.Create);
            sw = new StreamWriter(aFile);
        }
        catch
        {
            return false;
        }

        foreach (Savings mySave in mySavingAccount)
        {
            myString = mySave.AccountNumber + "," + mySave.AccountBalance;
            sw.WriteLine(myString);

        }
        sw.Close();
        return true;
    }

Есть идеи, в чем может быть проблема? Заранее спасибо и дайте мне знать, если вам нужны какие-либо другие части кода.

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Создайте StreamWriter в операторе using, чтобы обеспечить его правильное закрытие.

1 голос
/ 13 декабря 2011

Попробуйте добавить второй параметр boolean к вашему вызову StreamWriter. Это параметр добавления. True для добавления в файл, false для его перезаписи.

sw = new StreamWriter(aFile, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...