Dúvidas classe backup .zip

5 respostas
A

Saudações a todos do PJ!

Encontrei aki no PJ um código para realizar backups de arquivos salvando um .zip. Segue o código:

import java.util.zip.*; 
import java.io.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 

import java.util.Calendar; 
import java.util.GregorianCalendar; 

import java.text.DecimalFormat; 

public class backup{ 
    
   public backup(){ 
       
      String filename = "backup"; 
       JFileChooser fc = new JFileChooser(new File(filename)); 
       ExampleFileFilter filter = new ExampleFileFilter(); 
      filter.addExtension("zip"); 
      filter.setDescription("Zip Files"); 
      filter.setExtensionListInDescription(false); 
      fc.setFileFilter( filter ); 
       fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
       fc.setDragEnabled(false); 
       fc.setApproveButtonMnemonic('S'); 
       fc.setApproveButtonToolTipText("Salvar Backup"); 
       fc.setApproveButtonText("Salvar"); 
       fc.setDialogTitle("Backup do Sistema"); 
       
       int result = fc.showOpenDialog(Teste.desktop); 
          
        if( result == JFileChooser.APPROVE_OPTION){ 
            
           File file = fc.getSelectedFile(); 
           
           if(file != null){ 
               
             byte[] buf = new byte[1024]; 
       
             try { 
                File f = new File(lc.getConfig(1)); 
                 String[] filenames = f.list(); 
                 ZipOutputStream out = new ZipOutputStream(new FileOutputStream( file + getData() + ".zip")); 
          
              
                 for (int i=0; i<filenames.length; i++) { 
                     FileInputStream in = new FileInputStream(lc.getConfig(1) + "//" + filenames[i]); 
                     out.putNextEntry(new ZipEntry(filenames[i])); 
          
                  
                     int len; 
                     while ((len = in.read(buf)) > 0) { 
                         out.write(buf, 0, len); 
                     } 
          
                     out.closeEntry(); 
                     in.close(); 
                 } 
          
              
                 out.close(); 
                 JOptionPane.showInternalMessageDialog(Teste.desktop, "Backup Criado com Sucesso", "Criando um Backup", JOptionPane.QUESTION_MESSAGE); 
                  
             } catch (IOException e) { 
                JOptionPane.showInternalMessageDialog(Teste.desktop, "Não Possivel Criar Backup - Tente Novamente", "", JOptionPane.ERROR_MESSAGE); 
                e.printStackTrace(); 
             } 
          
          } 
      } 
   } 
    
   public String getData(){ 
       
      Calendar cal = new GregorianCalendar(); 
       
      DecimalFormat dig = new DecimalFormat("00"); 
       
      return ("_" + dig.format( cal.get(Calendar.DAY_OF_MONTH)) + "_" + dig.format( cal.get(Calendar.MONTH) + 1) + "_" + dig.format( cal.get(Calendar.YEAR) - 2000)); 
   } 
}

Gostaria que alguém que tem implementado esse código me ajudasse a entender algumas partes dele, por exemplo:

File f = new File(lc.getConfig(1));

f é um objeto da classe File, mas na instanciação o lc é um objeto de que classe? Onde foi declarado? O faz o método chamado (getConfig(1))?

Aki novamente aparece o getConfig:

FileInputStream in = new FileInputStream(lc.getConfig(1) + "//" + filenames[i]);

O que está sendo feito? A minha maior dúvida é quanto ao lc? Devo declará-lo de que classe?

Desde já agradeço aos que colaborarem...

5 Respostas

C

Este lc não será um erro de digitação onde o correto seria fc? olha a declaração dele aqui.

JFileChooser fc = new JFileChooser(new File(filename));

R

To procurando esse lc a meia hora,

tambem acho que deva ser fc…

[]'s

A

Não é fc, pois não existe o método getConfig() para objetos da classe JFileChooser.

A dúvida continua…

C

Tenta este Código aí embaixo então, utilizei ele em uma aplicação que fiz na faculdade, é bem simples, se precisar explicar me procura.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.zip.*;
import java.io.*;
import java.text.*;
import java.util.Calendar;
import java.util.GregorianCalendar;


public class Backup extends JInternalFrame
{
	//Cria o Painel
	private JPanel pBackup;
	
	//Cria os Botões
	private JButton bGerar, bRestaurar;
	
	//Cria o Layout das Guias
	private GridBagLayout gbBackup;
	private GridBagConstraints gbCBackup;
	
	//Método Construtor Classe Backup
	public Backup()
	{
		super("Backup");
		
		//Cria e Instancia o Contentor da Guia e define o layout do contentor
		Container c = getContentPane();
				
		//Instancia o Layout do Painel
		gbBackup = new GridBagLayout();
		gbCBackup = new GridBagConstraints();

		//Instancia o Painel
		pBackup = new JPanel();
		pBackup.setLayout(gbBackup);
		
		//Instancia e Adiciona os Botões
		bGerar = new JButton("Gerar o Backup do Sistema");
		//Adicionando o evento clicar ao botão Gerar
		bGerar.addActionListener
		(
			new ActionListener()
		  	{
				public void actionPerformed(ActionEvent e)
				{
					cliqueGerar();
				}
			}
		);
		
		bRestaurar = new JButton("Restaurar o Backup do Sistema");
		//Adicionando o evento clicar ao botão Restaurar
		bRestaurar.addActionListener
		(
			new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					if (JOptionPane.showConfirmDialog(Backup.this,"Deseja Realmente Restaurar o Backup?, \n(O Banco Atual será Substituído)","Confirmação",JOptionPane.YES_NO_OPTION)==0)
					{
						cliqueRestaurar();
					}
				}
			}
		);
		
		adComp(bGerar,1,0,2,1,gbCBackup,gbBackup,pBackup);
		adComp(bRestaurar,1,2,2,1,gbCBackup,gbBackup,pBackup);
		
		//Adiciona a Guia ao Contentor
		c.add(pBackup, BorderLayout.NORTH);
		
		//Define as Propriedadas de exibição da Janela
		setSize(450, 80);
		setLocation(100,100);
		setClosable(true);
		setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
		show();
	}
	
	//Método que adiciona os componentes no layout gridBag
	private void adComp(Component c, int linha, int coluna, int largura, int altura, GridBagConstraints gb, GridBagLayout gbLayout, JPanel panel)
	{
		gb.gridx = coluna;
		gb.gridy = linha;
		gb.gridwidth = largura;
		gb.gridheight = altura;
		gb.anchor = GridBagConstraints.WEST;
		gbLayout.setConstraints(c, gb);
		panel.add(c);
	}
	
	//Método que gera o Backup
	private void cliqueGerar()
	{
		String filename = "backup" + getData();
		try
		{
			File f = new File("c:\TransPsi\Dados\TransPsi.gdb");
			ZipOutputStream out = new ZipOutputStream(new FileOutputStream ("c:\TransPsi\Backup\" + filename + ".zip"));
			FileInputStream in = new FileInputStream(f);
			out.putNextEntry(new ZipEntry("c:\TransPsi\Dados\TransPsi.gdb"));
			int len;
			byte[] buf = new byte[1024];
			while ((len = in.read(buf)) > 0)
			{
				out.write(buf, 0, len);
			}
			out.closeEntry();
			in.close();
			out.close();
			JOptionPane.showMessageDialog(Backup.this,"Backup Gerado com Sucesso", "Confirmação de Backup", JOptionPane.INFORMATION_MESSAGE);
		}
		catch (IOException e)
		{
			JOptionPane.showMessageDialog(Backup.this,"Erro gerando Backup" + e, "Confirmação de Backup", JOptionPane.INFORMATION_MESSAGE);
		}
	}
	
	//Método para informar Data Atual
	public String getData()
	{
		Calendar cal = new GregorianCalendar();
		DecimalFormat dig = new DecimalFormat("00");
		return ("_" + dig.format( cal.get(Calendar.DAY_OF_MONTH)) + "_" + dig.format(cal.get(Calendar.MONTH) + 1) + "_" + dig.format(cal.get(Calendar.YEAR) - 2000));
	}
	
	//Método que restaura o Backup
	private void cliqueRestaurar()
	{
		String filename = "backup" + getData();
		JFileChooser fc = new JFileChooser(new File("backup"));
		fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
		fc.setDragEnabled(false);
		fc.setApproveButtonMnemonic('R');
		fc.setApproveButtonToolTipText("Restaura o arquivo de Backup");
		fc.setApproveButtonText("Restaurar");
		fc.setCurrentDirectory(new File("c:\TransPsi\Backup"));
		fc.setFileSelectionMode(0);
		int result = fc.showOpenDialog(Backup.this);
		if (result == JFileChooser.APPROVE_OPTION)
		{
			try
			{
				File f = fc.getSelectedFile();
				ZipInputStream in = new ZipInputStream(new FileInputStream (f));
				FileOutputStream out = new FileOutputStream("c:\TransPsi\Dados\TransPsi.gdb");
				//in.getNextEntry();
				if (in.getNextEntry().getName().equals("c:\TransPsi\Dados\TransPsi.gdb"))
				{
					int len;
					byte[] buf = new byte[1024];
					while ((len = in.read(buf)) > 0)
					{
						out.write(buf, 0, len);
					}
					in.closeEntry();
					out.close();
					in.close();
					JOptionPane.showMessageDialog(Backup.this,"Restauração Efetuada com Sucesso", "Confirmação de Restauração de Backup", JOptionPane.INFORMATION_MESSAGE);
				}
				else
				{
					JOptionPane.showMessageDialog(Backup.this,"Arquivo de Backup Inválio", "Erro Restaurando Backup", JOptionPane.ERROR_MESSAGE);
					in.closeEntry();
					out.close();
					in.close();
				}
			}
			catch (IOException e)
			{
				JOptionPane.showMessageDialog(Backup.this,"Erro restaurando Backup" + e, "Confirmação de Backup", JOptionPane.INFORMATION_MESSAGE);
			}
		}
	}
}
[/code]
A

Valeu clibero!!! Você quebrou o maior galho. Se precisar de alguma coisa que estiver ao meu alcance é só falar.

Abraços,

Grato,

Arlen

Criado 18 de janeiro de 2005
Ultima resposta 20 de jan. de 2005
Respostas 5
Participantes 3