Исправить ошибки при работе с файлом - 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();
}