Исправить ошибки при работе с файлом - C#
Формулировка задачи:
Я хотел, чтобы в файле хранились значения порта и размера буфера, а если файл не создан или неправильно введены данные в файле, то я его перезаписываю. Собственно на деле, у меня во время работы вылетает куча ошибок и файл всегда перезаписывается(вроде как).
Код:
Где бы мне поправить, не меняя общую структуру программы?
namespace ConsoleApplication31 { class Program { static void Main(string[] args) { Console.WriteLine(MyConsts.BufferSize); Console.ReadKey(); } } public static class MyConsts { public static event EventHandler OnChange; static MyConsts() { FileStream fs = new FileStream(ServerSettingsFileName, FileMode.OpenOrCreate); fs.Dispose(); try { using (StreamReader sr = new StreamReader(ServerSettingsFileName)) { string __port = sr.ReadLine(); string _bufferSize = sr.ReadLine(); if (string.IsNullOrEmpty(__port) || string.IsNullOrEmpty(_bufferSize)) throw new Exception("Can't read settings file"); Console.WriteLine(Convert.ToInt32(__port)); Port = Convert.ToInt32(__port); BufferSize = Convert.ToInt32(_bufferSize); buffer = new byte[BufferSize]; } OnChange += new EventHandler(ReTypeSettingsFile); } catch (Exception e) { Console.WriteLine(e); Port = 11200; OnChange += new EventHandler(ReTypeSettingsFile); BufferSize = 1024; } } public const string ServerSettingsFileName = "ServerSettings.txt"; private static int _port; public static int Port { get { return _port; } set { _port = value; OnChange(value, EventArgs.Empty); } } private static int _bufferSize; public static int BufferSize { get { return _bufferSize; } set { MyConsts._bufferSize = value; OnChange(value, EventArgs.Empty); buffer = new byte[value]; } } public static byte[] buffer; private static void ReTypeSettingsFile(object sender, EventArgs e) //перезапись файла { using (StreamWriter sw = new StreamWriter("ServerSettings.txt", false)) { sw.WriteLine(Port); sw.WriteLine(BufferSize); } } } }
Решение задачи: «Исправить ошибки при работе с файлом»
textual
Листинг программы
public static event Action OnChange; static MyConsts() { try { using (StreamReader sr = new StreamReader(ServerSettingsFileName)) { Port = int.Parse(sr.ReadLine()); BufferSize = int.Parse(sr.ReadLine()); } } catch { Port = 11200; BufferSize = 1024; } OnChange += ReTypeSettingsFile; OnChange(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д