J(de)compression v4 beta

Description

C'est un programme qui fait plus ou moins la même chose que Winrar mais avec java.
Sans faire de la pub, le programme utilise le "KIT DE FICHIERS DE PROGRAMMATION", que j'ai aussi fait, ce qui permet de réutiliser facilement certains fichiers du programme. C'est normal si certains fichier de ce programme sont plus récent que ceux du Kit (je ne sais pas tout mettre à jour, au le jour le jour...).

On peut:
- Compresser et décompresser des fichiers (zip).
- Afficher le contenu d'un zip.
- On peut choisir de taux de compression, le lieu où compresser, ...

Avantage comparé à d'autre type de programme:
- Celui-ci peut "décompresser" les dossiers, ce que beaucoup d'autres programmes ne savent pas faire.

Il y a encore quelque bugs à corriger, il faut que je le fasse, mais bon...

Source / Exemple :


Source du 1er fichier lors du lancement du programme:

   import java.util.Scanner;
   import java.util.ArrayList;

   import java.awt.Container;
   import java.awt.FlowLayout;
   import java.awt.event.ActionListener;
   import java.awt.event.ActionEvent;
   import java.awt.event.WindowAdapter;
   import java.awt.event.WindowEvent;

   import javax.swing.JFrame;
   import javax.swing.JTextArea;
   import javax.swing.JScrollPane;
   import javax.swing.JTextField;
   import javax.swing.JButton;
   import javax.swing.JLabel;
   import javax.swing.JFileChooser;

    public class JDeCompression extends JFrame implements ActionListener{
   
      JTextArea txt;
      JScrollPane	barre= new JScrollPane();
   
   	//Le nom du fichier ou, où il se trouve:
      static JTextField lieu;
      
      JButton vers,
              ajouter,
      		  decompresser,
      		  compresser,
      		  compression,
      		  contenu_zip;
   
      JDialog jd= new JDialog();
   
      int compression_nb= 0;
   
       public JDeCompression(){
      
      //Caractéristiques de la fenettre:
         setTitle("J(De)Compression - Version: 4");
         //Largeur, hauteur:
         setSize(370, 290);
         setResizable(false);
       
         setLocationRelativeTo(null);
      
         setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
      
         addWindowListener(
                new WindowAdapter(){
                   public void windowClosing(WindowEvent e){
                     System.exit(0);
                  }
               });
      
         Container contenu= getContentPane();
         contenu.setLayout(new FlowLayout());
      
      //Là où l'utilisateur met son txt:
         //Hauteur, largeur:
         txt= new JTextArea(10, 30);
         //txt.setLineWrap(true);
         txt.setToolTipText("Le nom des fichiers à compreser ou à décompresser");
         txt.setEditable(true);
      
         barre= new JScrollPane(txt, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
         barre.setAutoscrolls(true);
      
      //L'endroit où on donne le nom du fichier:
         lieu= new JTextField(22);
         lieu.setToolTipText("<html><p>Le lieu où se trouvera ton fichier,</p><p>et ou son nom.</p></html>");
         lieu.setEditable(true);
      
      //Le boutton 'Decompresser':
         decompresser= new JButton("Decompresser");
         decompresser.setToolTipText("Decompresser tout les fichiers séléctionné.");
         decompresser.addActionListener(this);
      
      //Le boutton 'Compresser':
         compresser= new JButton("Compresser");
         compresser.setToolTipText("Compresser tout les fichiers séléctionné.");
         compresser.addActionListener(this);
      
      //Le boutton 'Ajouter':
         ajouter= new JButton("Ajouter");
         ajouter.setToolTipText("Ajouter un élément à la compression/decompression.");
         ajouter.addActionListener(this);
      
      //Le boutton 'Vers':
         vers= new JButton("...");
         vers.setToolTipText("Donner un nom de repertoire ou un nom de fichier.");
         vers.addActionListener(this);
      
      //Le boutton 'Compression x':
         compression= new JButton("Compression: "+compression_nb);
         compression.setToolTipText("Taux de compression (de 1 à 9)");
         compression.addActionListener(this);
      
      //Le boutton 'Contenu zip':
         contenu_zip= new JButton("Contenu zip");
         contenu_zip.setToolTipText("Voir le contenu d'un zip");
         contenu_zip.addActionListener(this);
      
      //On affiche les éléments:
         add(barre);
         contenu.add(new JLabel("Lieu: "));
         contenu.add(lieu);
         contenu.add(vers);
         contenu.add(ajouter);
         contenu.add(compresser);
         contenu.add(decompresser);
         contenu.add(compression);
         contenu.add(contenu_zip);
      }
   
    //S'il y a une action quelqu'on que:
       public void actionPerformed(ActionEvent e){
         if(e.getSource() == compresser)
            if(!"".equals(txt.getText()) && txt.getText() != null){
               System.out.println("On compresse:\n"+txt.getText());
               Scanner sc= new Scanner(txt.getText());
            
               Fichier f= new Fichier();
            
               ArrayList l= new ArrayList();
            
               while(sc.hasNext())
                  l.add(sc.nextLine());
            
               if(!"".equals(lieu.getText()) && lieu.getText() != null)
                  f.Compresser(l, lieu.getText()+"/", compression_nb);
               else
                  f.Compresser(l, compression_nb);
            
            }
            else
               System.out.println("Il faut que tu donnes des nom de fichiers à compresser ou a decompresser.");
            
         if(e.getSource() == decompresser)
            if(!"".equals(txt.getText()) && txt.getText() != null){
               System.out.println("On decompresse:\n"+txt.getText());
               Scanner sc= new Scanner(txt.getText());
            
               Fichier f= new Fichier();
            
               ArrayList l= new ArrayList();
            
               while(sc.hasNext())
                  l.add(sc.nextLine());
            
               if(!"".equals(lieu.getText()) && lieu.getText() != null)
                  f.Decompresser(l, lieu.getText()+"/");
               else
                  f.Decompresser(l);
            }
            else
               System.out.println("Il faut que tu donnes des nom de fichiers à compresser ou a decompresser.");
      
         if(e.getSource() == ajouter){
            jd.Valeur(false);
            jd.setFileSelectionMode(JFileChooser.FILES_ONLY);
            jd.Chemin(true);
            jd.JDialog();
            if(!"null".equals(jd.Valeur()))
               txt.append(jd.Valeur()+"\n");
         }
      
         if(e.getSource() == vers){
            jd.Valeur(false);
            jd.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
            jd.Chemin(true);
            jd.JDialog();
            if(!"null".equals(jd.Valeur()))
               lieu.setText(jd.Valeur());
         }
      
         if(e.getSource() == compression){
            if(compression_nb++ > 8)
               compression_nb= 0;
         
            compression.setText("Compression: "+compression_nb);
         }
      
         if(e.getSource() == contenu_zip)
            new Contenu_Zip().setVisible(true);
      }
   
       public static void main (String[] args){
         new JDeCompression().setVisible(true);
      }
   
   }

Conclusion :


Ce programme ne se veut pas innovant mais simple et réutilisable.

Les défauts majeur du programme (et à corriger) sont:
- La compréhension du programme: comment on l'utilise, il faut que je fasse un tuto + le proposer dans le programme.
- On ne sait pas "compresser un dossier.
- Il faut ajouter plus de commantaires.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.