mailBox emailbox;
FileStream fs = new FileStream(textBox1.Text + "/account.dat", FileMode.Create);
emailbox.email = textBox1.Text;
emailbox.username = textBox2.Text;
emailbox.password = textBox3.Text;
emailbox.smtpServer = textBox4.Text;
emailbox.popServer = textBox5.Text;
emailbox.popBeforeSmtp = checkBox1.Checked ? 1 : 0;
IFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(fs, emailbox);
}
catch (SerializationException ex)
{
MessageBox.Show("Відбулася помилка: " + ex.Message, "Помилка",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
throw;
}
finally
{
fs.Close();
}
запись структуры в бинарный файл в C#
Подскажите пожайлуста как можно записать структуру в бинарный файл.
Цитата: dimas09
Подскажите пожайлуста как можно записать структуру в бинарный файл.
Сериализация BinaryFormatter.
Код:
Спасибо за совет.
Пытаюсь записать, но сериализация не проходит, получаю ошибку, что данный объект сериализировать нельзя.
Код:
[Serializable]
Код:
mailBox p;
...
p = (mailBox)formatter.Deserialize(fs);
...
p = (mailBox)formatter.Deserialize(fs);
но получаю ошибку: Specified cast is not valid, то есть не хочет преобразовывать в мой тип mailBox. Почему?
весь код приведите где вы сериализуете и десереализуете
Код:
[Serializable]
public struct mailBox
{
public string email;
public string username;
public string password;
public string smtpServer;
public string popServer;
public int popBeforeSmtp;
}
........
mailBox emailbox;
FileStream fs = new FileStream(textBox1.Text + "/account.dat", FileMode.Create);
emailbox.email = textBox1.Text;
emailbox.username = textBox2.Text;
emailbox.password = textBox3.Text;
emailbox.smtpServer = textBox4.Text;
emailbox.popServer = textBox5.Text;
emailbox.popBeforeSmtp = checkBox1.Checked ? 1 : 0;
IFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(fs, emailbox);
}
catch (SerializationException ex)
{
MessageBox.Show("Відбулася помилка: " + ex.Message, "Помилка",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
throw;
}
finally
{
fs.Close();
}
public struct mailBox
{
public string email;
public string username;
public string password;
public string smtpServer;
public string popServer;
public int popBeforeSmtp;
}
........
mailBox emailbox;
FileStream fs = new FileStream(textBox1.Text + "/account.dat", FileMode.Create);
emailbox.email = textBox1.Text;
emailbox.username = textBox2.Text;
emailbox.password = textBox3.Text;
emailbox.smtpServer = textBox4.Text;
emailbox.popServer = textBox5.Text;
emailbox.popBeforeSmtp = checkBox1.Checked ? 1 : 0;
IFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(fs, emailbox);
}
catch (SerializationException ex)
{
MessageBox.Show("Відбулася помилка: " + ex.Message, "Помилка",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
throw;
}
finally
{
fs.Close();
}
а считываю на главной
Код:
[Serializable]
public struct mailBox
{
public string email;
public string username;
public string password;
public string smtpServer;
public string popServer;
public int popBeforeSmtp;
}
...........
mailBox p;
FileStream fs = new FileStream(dri.Name+"/account.dat", FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter();
p = (mailBox)formatter.Deserialize(fs);
}
catch (SerializationException ex)
{
MessageBox.Show("Відбулася помилка: " + ex.Message, "Помилка",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
throw;
}
finally
{
fs.Close();
}
public struct mailBox
{
public string email;
public string username;
public string password;
public string smtpServer;
public string popServer;
public int popBeforeSmtp;
}
...........
mailBox p;
FileStream fs = new FileStream(dri.Name+"/account.dat", FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter();
p = (mailBox)formatter.Deserialize(fs);
}
catch (SerializationException ex)
{
MessageBox.Show("Відбулася помилка: " + ex.Message, "Помилка",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
throw;
}
finally
{
fs.Close();
}
У вас ДВЕ структуры. У них одинаковые имена, одинаковые члены, но РАЗНЫЕ TypeId.
спасибо все получилось.