Этот код:
string[] iconfig = System.IO.File.ReadAllLines("config.cfg");
iuser = iconfig[0];
ipass = iconfig[1];
imem = iconfig[2];
iserver = iconfig[3];
... выдаст исключение, о котором вы говорили, если файл содержит менее 4 строк. Это то, что происходит, возможно? (Вы говорите об этом, создавая пустой файл.)
Обратите внимание, что вы также открываете файл с StreamReader
, но без всякой цели, учитывая, что вы также просто вызываете ReadAllLines
, который откроет его отдельно.
Когда вы записываете файл с этим кодом:
System.IO.StreamWriter configwrite = new System.IO.StreamWriter("config.cfg");
configwrite.WriteLine(outString);
configwrite.Close();
это записывает только одну строку, предполагая, что outString
не содержит разрывов строк ... поэтому я не уверен, как это может когда-либо работать, даже в IDE.)
(Обратите внимание, что если вы do хотите использовать StreamReader
и StreamWriter
, вам следует использовать операторы using
, чтобы дескриптор файла закрывался, даже если есть исключения. здесь нужно использовать StreamReader
или StreamWriter
- вы можете использовать File.WriteAllLines
или File.WriteAllText
.)
Наконец, шифрование не должно выполняться поверх текста. Обычно вы получаете искаженный текст, который может легко содержать недопустимые единицы кода и т. Д. Обычно, если вы хотите зашифровать текст, вы конвертируете его в двоичный файл, применяете алгоритм шифрования стандартный (не пишите свой собственный) и затем, если вы хотите получить текст из него, вы конвертируете его в base64 с помощью Convert.ToBase64String
.