Имеется программа, которая открывает файл Settings.ini, расшифровывает содержимое, заносит в таблицу данные, и зашифровывает файл обратно.
Работает она по следующему коду:
string path1 = Environment.CurrentDirectory + @"/Settings.ini";
using (StreamReader sr = new StreamReader(path1))
{
text = Decrypt(sr.ReadToEnd(), "Key");
}
using (StreamWriter sw = new StreamWriter(path1, false, System.Text.Encoding.Default))
{
sw.WriteLine(text);
}
foreach (var line in File.ReadAllLines(path1))
{
var array = line.Split('|');
dataGridView1.Rows.Add(array);
}
using (StreamReader sr = new StreamReader(path1))
{
text = Encrypt(sr.ReadToEnd(), ppap);
}
using (StreamWriter sw = new StreamWriter(path1, false, System.Text.Encoding.Default))
{
sw.WriteLine(text);
}
Т.е программа открывает содержимое файла, расшифровывает его, получает готовый текст, в котором линии, в этих линиях слова через разделитель Например:
Слово1|Слово2|Слово3|
Слово4|Слово5|Слово6|
Я захотел упростить код, и сделать так, чтобы программа сразу расшифровывала файл (Не меняя ресурсы файла Settings.ini), и получала строки, которые позже загружала в dataGridView. Мучался час с проблемой, ничего не получалось. Надеюсь на вашу помощь)
Вот набросок кода (Неправильного), который я смог написать.
Работает он конечно же некорректно
using (StreamReader sr = new StreamReader(path1))
{
var MyList = Decrypt(sr.ReadToEnd(), "key").ToList();
foreach (var line in MyList)
{
var array = line.ToString().Split('|'); //Выводит в таблицу строки через символ (Вот в чем некорректность данного кода)
dataGridView1.Rows.Add(array);
}
}
var text = Decrypt(File.ReadAllText(path1));
Можно передавать text
в StringReader
- из него читаем построчно так же, как из StreamReader
а:
using (var sr = new StringReader(text))
{
string line;
while ((line = sr.ReadLine()) != null)
dgv.Rows.Add(line.Split('|'));
}
Жаль, у стрингридера нет такого удобного метода, как File.ReadLines
.
Другой способ:
var lines = text.Split(Environment.NewLine.ToArray(), StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
dgv.Rows.Add(line.Split('|'));
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Почему возможно изменить объекты формы (свойства объектов: buttonCaption = "") только через SynchronizationContext (т