Salvando arquivos e carregando com Open e Save Dialog

Usando a classe SaveFileDialog e OpenfileDialog, podemos abrir um caixa de dialogo para carregar e salvar arquivos.

Publicado em

É normal em sistemas que geram algum tipo de relatório ou informação na qual precisamos de uma opção para salvar estes dados, ou um sistema que precisa abrir um arquivo para fazer algumas leituras para executar determinadas tarefas.

Nesta matéria vamos criar um simples projeto que tem como objetivo salvar o conteúdo de um Rich Textbox e carregar as mesmas informações.

Vamos usar dois componentes que é o SaveFileDialog e OpenfileDialog, ambos só retornam o diretório que será executado uma ação, no Save retorna o diretório que o arquivo será salvo e no Open retorna o diretório que será aberto.

É recomendável que leia esta matéria, https://satellasoft.com/artigo/csharp/gravando-e-lendo-dados-em-arquivo-texto-com-csharp, vamos usar o StreamWriter e StreamReader neste projeto.

Para começar crie um novo formulário, insira dois Button, um RichTextBox, SaveFileDialog, OpenFileDialog, renomeie através da propriedade name de cada objeto como mostrado abaixo.

NomeObjeto
rtbTextoRichTextBox
btnSalvarButton1
btnCarregarButton2
sfdSalvarSaveFileDialog
oflAbrir OpenFileDialog

 

Salvando arquivos e carregando com Open e Save Dialog
Salvando arquivos e carregando com Open e Save Dialog

Altere o formulário como você preferir, insira um nome, título, renomeie os botões, faça o que desejar, um exemplo é mostrado abaixo.

Salvando arquivos e carregando com Open e Save Dialog
Salvando arquivos e carregando com Open e Save Dialog

Agora vamos programar, depois que nossa classe for instanciada, declare duas variáveis do tipo String com os nomes dirSalvar e dirAbrir, estas variáveis serão responsáveis por armazenar os caminhos que vamos gravar e abrir.

Código 01:

 string dirSalvar; // Variável que armazena diretório com arquivo e extensão a ser salvo.
 string dirAbrir; // Variável que armazena diretório com arquivo e extensão a ser carregado.

Agora de um duplo clique no botão btnSalvar e insira o código abaixo, leia atentamente os comentários, é muito simples de se entender, se você conhece o StreamWriter e StreamReader vai ser mais fácil ainda.

Código 02:

sfdSalvar.Title = "Salvar Documento"; //Adicionamos um titulo a janela de salvar
            sfdSalvar.Filter = "TXT (.txt) | *.txt | HTML (.html) |*.html"; //Adicionamos as extensões que serão salvas, .txt e .html

            if (sfdSalvar.ShowDialog() == DialogResult.OK)
                /* Se o resultado da caixa de dialogo for igual a Ok, retorna true e entra no IF
                 */
            {
                dirSalvar = sfdSalvar.FileName;//FileName retorna o diretório, este valor adicionamos dentro da variável dirSalvar (c:/index.html, c:/texto.txt).

                StreamWriter streamWriter = new StreamWriter(dirSalvar); //Instanciamos um novo objeto para escrita, passamos o diretório e arquivo que será escrito.
                streamWriter.Write(rtbTexto.Text); // Gravamos o valor no arquivo.
                streamWriter.Close(); // Fechamos a conexão com o arquivo.
            }
Agora de um duplo clique no botão btnAbrir, a lógica segue a mesma do btnSalvar, porém usamos o StreamReader para ler nosso diretório.

Código 03:

            /* Para o Open File Dialog segue o mesmo paradigma acima, o que muda é que não escrevemos com o StreaWriter e sim carregamos com o StreamReader.
             */
            ofdAbrir.Title = "Procurar Arquivo";
            ofdAbrir.Filter = "All (*.*) | *.*";

            if (ofdAbrir.ShowDialog() == DialogResult.OK)
            {
                dirAbrir = ofdAbrir.FileName;

                StreamReader streamReader = new StreamReader(dirAbrir);
                rtbTexto.Text = streamReader.ReadLine();
                streamReader.Close();
            }

Nosso sistema já está salvando e lendo arquivos, abaixo um Print do resultado final.

Salvando arquivos e carregando com Open e Save Dialog
Salvando arquivos e carregando com Open e Save Dialog

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
 
namespace saveOpenDialog
{
    public partial class frmPrincipal : Form
    {
        string dirSalvar; // Variável que armazena diretório com arquivo e extensão a ser salvo.
        string dirAbrir; // Variável que armazena diretório com arquivo e extensão a ser carregado.
        public frmPrincipal()
        {
            InitializeComponent();
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
            Process.Start("http://www.satellasoft.com");
        }
 
        private void btnSalvar_Click(object sender, EventArgs e)
        {
             
            sfdSalvar.Title = "Salvar Documento"; //Adicionamos um titulo a janela de salvar
            sfdSalvar.Filter = "TXT (.txt) | *.txt | HTML (.html) |*.html"; //Adicionamos as extensões que serão salvas, .txt e .html
 
            if (sfdSalvar.ShowDialog() == DialogResult.OK)
                /* Se o resultado da caixa de dialogo for igual a Ok, retorna true e entra no IF
                 */
            {
                dirSalvar = sfdSalvar.FileName;//FileName retorna o diretório, este valor adicionamos dentro da variável dirSalvar (c:/index.html, c:/texto.txt).
 
                StreamWriter streamWriter = new StreamWriter(dirSalvar); //Instanciamos um novo objeto para escrita, passamos o diretório e arquivo que será escrito.
                streamWriter.Write(rtbTexto.Text); // Gravamos o valor no arquivo.
                streamWriter.Close(); // Fechamos a conexão com o arquivo.
            }
 
        }
 
        private void btnAbrir_Click(object sender, EventArgs e)
        {
            /* Para o Open File Dialog segue o mesmo paradigma acima, o que muda é que não escrevemos com o StreaWriter e sim carregamos com o StreamReader.
             */
            ofdAbrir.Title = "Procurar Arquivo";
            ofdAbrir.Filter = "All (*.*) | *.*";
 
            if (ofdAbrir.ShowDialog() == DialogResult.OK)
            {
                dirAbrir = ofdAbrir.FileName;
 
                StreamReader streamReader = new StreamReader(dirAbrir);
                rtbTexto.Text = streamReader.ReadLine();
                streamReader.Close();
            }
 
  
        }
    }
}

 

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Todos os nossos cursos em promoção
Todos os nossos cursos em promoção

Webstories

Todos os nossos cursos em promoção


Deixe um comentário
Aguarde...
Todos os nossos cursos em promoção