Você está na página 1de 11

Ficheiros: Texto Binrios Gravao por Serializao

Exemplo da agenda Gravao em ficheiros de texto, binrio, e serializao


(Ficheiro binrio e XML)

Cdigo C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.VisualBasic;
using System.IO;

using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;

namespace Lista_telefonica_12AFK
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Ficheiros: Texto Binrios Gravao por Serializao

[Serializable]
public struct contacto
{
public string nome;
public string tel;
public string email;

public contacto(string nom, string t, string mail)


{ nome = nom; tel = t; email = mail; }

public contacto[] agenda = new contacto[0]; //vetor contactos vazio

private void button1_Click(object sender, EventArgs e)


{
//registar um contacto

string Nome = Interaction.InputBox("Nome:");


string tlm = Interaction.InputBox("Telemvel:");
string correio_eletronico = Interaction.InputBox("Email:");

contacto c = new contacto(Nome, tlm, correio_eletronico);

//ou
//contacto c = new contacto();
//c.nome = Nome; c.tel = tlm; c.email = correio_eletronico;

if (agenda == null || agenda.Length == 0)


{
Array.Resize(ref agenda, 1);
}
else
{
Array.Resize(ref agenda, agenda.Length + 1);
}

agenda[agenda.Length - 1] = c;

private void button2_Click(object sender, EventArgs e)


{
//Listar contactos
listar();
}

void listar()
{
//procediemento listar
Ficheiros: Texto Binrios Gravao por Serializao

if (agenda==null || agenda.Length==0)
{
grelha_contactos.Rows.Clear();
MessageBox.Show("Sem contactos na Agenda!");
return;
}
else
{
grelha_contactos.RowCount = agenda.Length; //criar linhas=numero de registos
for (int i=0; i<agenda.Length; i++)
{
grelha_contactos.Rows[i].Cells[0].Value = agenda[i].nome;
grelha_contactos.Rows[i].Cells[1].Value = agenda[i].tel;
grelha_contactos.Rows[i].Cells[2].Value = agenda[i].email;
}

}
grelha_contactos.Sort(grelha_contactos.Columns[0], ListSortDirection.Ascending);

private void button3_Click(object sender, EventArgs e)


{
//Procurar por nome
string nom;
nom = Interaction.InputBox("Nome?");

grelha_contactos.Rows.Clear();

for(int i=0; i<agenda.Length;i++)


{
if(agenda[i].nome == nom || agenda[i].nome.StartsWith(nom))
{
grelha_contactos.RowCount = grelha_contactos.RowCount + 1;
grelha_contactos.Rows[grelha_contactos.RowCount - 1].Cells[0].Value = agenda[i].nome;
grelha_contactos.Rows[grelha_contactos.RowCount - 1].Cells[1].Value = agenda[i].tel;
grelha_contactos.Rows[grelha_contactos.RowCount - 1].Cells[2].Value = agenda[i].email;

private void button4_Click(object sender, EventArgs e)


{
//Pesquisar por telefone

string telefone;
telefone = Interaction.InputBox("Telefone?");
Ficheiros: Texto Binrios Gravao por Serializao

grelha_contactos.Rows.Clear();

for (int i = 0; i < agenda.Length; i++)


{
if (agenda[i].tel == telefone)
{
grelha_contactos.RowCount = grelha_contactos.RowCount + 1;
grelha_contactos.Rows[grelha_contactos.RowCount - 1].Cells[0].Value = agenda[i].nome;
grelha_contactos.Rows[grelha_contactos.RowCount - 1].Cells[1].Value = agenda[i].tel;
grelha_contactos.Rows[grelha_contactos.RowCount - 1].Cells[2].Value = agenda[i].email;

private void button5_Click(object sender, EventArgs e)


{
//eliminar
string nom;
nom = Interaction.InputBox("Nome a Eliminar?");
Boolean encontrou = false;

for (int i = 0; i < agenda.Length; i++)


{
if (agenda[i].nome == nom)
{
agenda[i].nome = agenda[agenda.Length - 1].nome;
agenda[i].tel = agenda[agenda.Length - 1].tel;
agenda[i].email = agenda[agenda.Length - 1].email;
encontrou = true;
}
}

if (encontrou)
{
Array.Resize(ref agenda, agenda.Length - 1);
listar();//chama procedimento listar
MessageBox.Show("Registo Eliminado!");
}
}

private void button6_Click(object sender, EventArgs e)


{
//Guardar agenda (ficheiro de texto)
string ficheiro = "";
saveFileDialog1.Filter = "Ficheiros de texto |*.txt";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = saveFileDialog1.FileName;
}
else
{
return;
Ficheiros: Texto Binrios Gravao por Serializao

if (!File.Exists(ficheiro)) //se no existe o ficheiro


{
using (StreamWriter fxt = File.CreateText(ficheiro))
{
for (int i=0; i< agenda.Length; i++)
{
fxt.WriteLine(agenda[i].nome);
fxt.WriteLine(agenda[i].tel);
fxt.WriteLine(agenda[i].email);
}
}
MessageBox.Show(agenda.Length + " contactos Guardados!");
}
else //se o ficheiro j existe
{

File.Delete(ficheiro);
using (StreamWriter fxt = File.CreateText(ficheiro))
{
for (int i = 0; i < agenda.Length; i++)
{
fxt.WriteLine(agenda[i].nome);
fxt.WriteLine(agenda[i].tel);
fxt.WriteLine(agenda[i].email);
}

}
MessageBox.Show(agenda.Length + " contactos Guardados!");
}

private void button7_Click(object sender, EventArgs e)


{
//Ler agenda (ficheiro de texto)

string ficheiro = "";


openFileDialog1.Filter = "Ficheiros de Texto |*.txt";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = openFileDialog1.FileName;
}
else
{
return;
}

if (File.Exists(ficheiro))
{
using (StreamReader fxt = File.OpenText(ficheiro))
{
agenda = new contacto[0];
Ficheiros: Texto Binrios Gravao por Serializao

contacto x;
while(fxt.Peek() >=0) //existe caracter
{
x.nome = fxt.ReadLine();
x.tel = fxt.ReadLine();
x.email = fxt.ReadLine();
Array.Resize(ref agenda, agenda.Length + 1);
agenda[agenda.Length - 1] = x;
}
}
listar();
MessageBox.Show(agenda.Length + " contactos lidos!");

private void button8_Click(object sender, EventArgs e)


{
//Guardar agenda (ficheiro de texto)
string ficheiro = "";
saveFileDialog1.Filter = "Ficheiros de texto |*.txt";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = saveFileDialog1.FileName;
}
else
{
return;
}

if (!File.Exists(ficheiro)) //se no existe o ficheiro


{
using (StreamWriter fxt = File.CreateText(ficheiro))
{
for (int i = 0; i < agenda.Length; i++)
{
fxt.WriteLine(agenda[i].nome + "#" +agenda[i].tel+ "#" + agenda[i].email);
}
}
MessageBox.Show(agenda.Length + " contactos Guardados!");
}
else //se o ficheiro j existe
{

File.Delete(ficheiro);
using (StreamWriter fxt = File.CreateText(ficheiro))
{
for (int i = 0; i < agenda.Length; i++)
{
fxt.WriteLine(agenda[i].nome + "#" + agenda[i].tel + "#" + agenda[i].email);
}
Ficheiros: Texto Binrios Gravao por Serializao

}
MessageBox.Show(agenda.Length + " contactos Guardados!");
}
}

private void button9_Click(object sender, EventArgs e)


{
//Ler agenda (ficheiro de texto)

string ficheiro = "";


openFileDialog1.Filter = "Ficheiros de Texto |*.txt";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = openFileDialog1.FileName;
}
else
{
return;
}

if (File.Exists(ficheiro))
{
using (StreamReader fxt = File.OpenText(ficheiro))
{
agenda = new contacto[0];
contacto x;
string linha = fxt.ReadLine();
while (linha != null)
{
string[] sDados = linha.Split('#');
x.nome = sDados[0];
x.tel = sDados[1];
x.email = sDados[2];
Array.Resize(ref agenda, agenda.Length + 1);
agenda[agenda.Length - 1] = x;
linha = fxt.ReadLine();
}
}
listar();
MessageBox.Show(agenda.Length + " contactos lidos!");
}
}

private void button11_Click(object sender, EventArgs e)


{
//Guardar - ficheiro binrio

string ficheiro = "";


saveFileDialog1.Filter = "Ficheiros binrios |*.bin|Todos os ficheiro|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = saveFileDialog1.FileName;
}
else
Ficheiros: Texto Binrios Gravao por Serializao

{
return;
}

if (!File.Exists(ficheiro)) //se ficheiro nao existe


{
using (BinaryWriter bw = new BinaryWriter(File.Open(ficheiro, FileMode.Create)))
{
for (int contacto=0; contacto<agenda.Length;contacto++)
{
bw.Write(agenda[contacto].nome);
bw.Write(agenda[contacto].tel);
bw.Write(agenda[contacto].email);
}
}
MessageBox.Show(agenda.Length + " Contactos Guardados");
}
else
{
File.Delete(ficheiro); //elimina
using (BinaryWriter bw = new BinaryWriter(File.Open(ficheiro, FileMode.Create)))
{
for (int contacto = 0; contacto < agenda.Length; contacto++)
{
bw.Write(agenda[contacto].nome);
bw.Write(agenda[contacto].tel);
bw.Write(agenda[contacto].email);
}
}
MessageBox.Show(agenda.Length + " Contactos Guardados");
}

private void button10_Click(object sender, EventArgs e)


{
//leitura - ficheiro binrio
string ficheiro = "";
openFileDialog1.Filter = "Ficheiro binrios|*.bin|Todos os ficheiro|*.*";
if (openFileDialog1.ShowDialog()==DialogResult.OK)
{
ficheiro = openFileDialog1.FileName;
}
else
{
return;
}

using (BinaryReader br = new BinaryReader(File.Open(ficheiro, FileMode.Open)))


{
agenda = new contacto[0];
while(br.BaseStream.Position <br.BaseStream.Length)
{
Ficheiros: Texto Binrios Gravao por Serializao

Array.Resize(ref agenda, agenda.Length + 1);


agenda[agenda.Length - 1].nome = br.ReadString();
agenda[agenda.Length - 1].tel = br.ReadString();
agenda[agenda.Length - 1].email = br.ReadString();
}

listar();
MessageBox.Show(agenda.Length + " Contactos lidos!");

private void button13_Click(object sender, EventArgs e)


{
// guardar agenda serializable (ficheiro binrio)

string ficheiro = "";


saveFileDialog1.Filter = "Ficheiros binrios|*.bin|Todos os ficheiro|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = saveFileDialog1.FileName;
}
else
{ return; }

if (!File.Exists(ficheiro))
{

IFormatter formatadorBIN = new BinaryFormatter();


FileStream fich = new FileStream(ficheiro, FileMode.Create);

formatadorBIN.Serialize(fich, agenda); // grava a agenda toda de uma vez


fich.Close();
MessageBox.Show("Agenda gravada!");

}
else
{
File.Delete(ficheiro);
IFormatter formatadorBIN = new BinaryFormatter();
FileStream fich = new FileStream(ficheiro, FileMode.Create);

formatadorBIN.Serialize(fich, agenda); // grava a agenda toda de uma vez


fich.Close();
MessageBox.Show("Agenda gravada!");

}
Ficheiros: Texto Binrios Gravao por Serializao

private void button12_Click(object sender, EventArgs e)


{
// LER agenda serializable (ficheiro binrio)

string ficheiro = "";


openFileDialog1.Filter = "Ficheiros binrios|*.bin|Todos os ficheiro|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = openFileDialog1.FileName;
}
else
{ return; }

if (File.Exists(ficheiro))
{
IFormatter formatadorBIN = new BinaryFormatter();
FileStream fich = new FileStream(ficheiro, FileMode.Open);

agenda = (contacto[])formatadorBIN.Deserialize(fich); // le a agenda de contactos


fich.Close();
listar();

MessageBox.Show("Agenda Lida!");
}

private void button15_Click(object sender, EventArgs e)


{
// guardar agenda serializable (ficheiro XML)

string ficheiro = "";


saveFileDialog1.Filter = "Ficheiros binrios|*.xml|Todos os ficheiro|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = saveFileDialog1.FileName;
}
else
{ return; }

if (!File.Exists(ficheiro))
{
XmlSerializer formatadorXML = new XmlSerializer(typeof(contacto[]));
FileStream fich = File.Create(ficheiro);
formatadorXML.Serialize(fich, agenda);
fich.Close();
MessageBox.Show("Agenda gravada!");
}
else
{
File.Delete(ficheiro);
XmlSerializer formatadorXML = new XmlSerializer(typeof(contacto[]));
FileStream fich = File.Create(ficheiro);
formatadorXML.Serialize(fich, agenda);
Ficheiros: Texto Binrios Gravao por Serializao

fich.Close();
MessageBox.Show("Agenda gravada!");

}
}

private void button14_Click(object sender, EventArgs e)


{
// Ler agenda serializable (ficheiro XML)

string ficheiro = "";


openFileDialog1.Filter = "Ficheiros binrios|*.xml|Todos os ficheiro|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
ficheiro = openFileDialog1.FileName;
}
else
{ return; }

if (File.Exists(ficheiro))

{
XmlSerializer formatadorXML = new XmlSerializer(typeof(contacto[]));
FileStream fich = File.Open(ficheiro, FileMode.Open);
agenda = (contacto[])formatadorXML.Deserialize(fich);

fich.Close();
listar();
MessageBox.Show("Agenda Lida!");

}
}
}
}