Я создаю программу, которая шифрует / хэширует сообщения
У меня есть список, который содержит (дата, пользователь, шифрование, сообщение, зашифрованное сообщение)
=> Variables.oHistorique.Liste_historique.
Когда я просто шифрую сообщения, затем сохраняю, все работает нормально, когда я открываю этот файл, список содержит всю ожидаемую информацию, однако, если я открою файл, а затем повторно сохраню его (даже под новым именем), он будет пуст, список пустой.
Я ценю всю помощь, которую я могу получить
Спасибо
P.S
Я проверил, и список заполняется при сохранении, но не при открытии вновь сохраненного файла
// когда я нажимаю открыть
private void ouvrirToolStripMenuItem_Click(object sender, EventArgs e)
{
FileDialog location = new OpenFileDialog();
location.Filter = "Data Files (*.dat)|*.dat";
location.FilterIndex = 1;
result = location.ShowDialog();
if (result == DialogResult.OK)
{
dataGridView1.Rows.Clear();
Variables.oHistorique = (CHistorique)oSerialize.DeSerializeObject(location.FileName);
for (int i = 0; i < Variables.oHistorique.Liste_historique.ToArray().Length; i++)
{
dataGridView1.Rows.Add(Variables.oHistorique.Liste_historique[i].Date, Variables.oHistorique.Liste_historique[i].User, Variables.oHistorique.Liste_historique[i].Type, Variables.oHistorique.Liste_historique[i].Chaine, Variables.oHistorique.Liste_historique[i].ChaineCrypt);
}
dataGridView1.CurrentCell = null;
}
}
// Когда я нажимаю сохранить:
private void sauvgarderToolStripMenuItem_Click(object sender, EventArgs e)
{
FileDialog location = new SaveFileDialog();
location.Filter = "Data Files (*.dat)|*.dat";
location.FilterIndex = 1;
result = location.ShowDialog();
if (result == DialogResult.OK)
{
oSerialize.SerializeObject(CHistorique.GetInstance(),location.FileName);
}
}
// Вот мой класс Сериализация
class CSerialize
{
private static CSerialize Instance;
private CSerialize()
{
}
public void SerializeObject(object o, string file)
{
Stream stream = File.Open(file, FileMode.Create);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(stream, o);
stream.Close();
}
public object DeSerializeObject(string file)
{
Object o;
Stream stream = File.Open(file, FileMode.Open);
BinaryFormatter b = new BinaryFormatter();
o = b.Deserialize(stream);
stream.Close();
return o;
}
public static CSerialize GetInstance()
{
if (Instance == null)
{
Instance = new CSerialize();
}
return Instance;
}
}