package ZipTest; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.security.cert.Extension; import java.util.Scanner; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * Frame cu textarea, pentru afisarea cintinutului a unui zipArhiv, cu o lista de alege un file * si menu pentru a alege alt zipArhiv. * @author Dan * */ public class ZipTestFrame extends JFrame { /** * */ private static final long serialVersionUID = 1L; public ZipTestFrame() { setTitle("ZipTest"); setSize(WIDTH, HEIGHT); //Adaugarea cimpului MEnu si puntelor Open,Exit JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("File"); JMenuItem openItem = new JMenuItem("Open"); menu.add(openItem); openItem.addActionListener(new OpenAction()); JMenuItem exitItem = new JMenuItem("Exit"); menu.add(exitItem); exitItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub System.exit(0); } }); menuBar.add(menu); setJMenuBar(menuBar); //Adaugarea TextArea si listei fileText = new JTextArea(); fileCombo = new JComboBox<String>(); fileCombo.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub loadZipFile((String) fileCombo.getSelectedItem()); } }); add(fileCombo, BorderLayout.SOUTH); add(new JScrollPane(fileText),BorderLayout.CENTER); } public static final int WIDTH = 400; public static final int HEIGHT=300; private JTextArea fileText; private JComboBox<String> fileCombo; private String zipname; /** * Listner pentru punctul FIle>Open */ private class OpenAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //Fereastra pentru alegerea arhivului JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new File(".")); ExtensionFileFilter filter = new ExtensionFileFilter(); filter.addExtension(".zip"); filter.addExtension(".jar"); filter.setDescription("ZIP archives"); chooser.setFileFilter(filter); int r = chooser.showOpenDialog(ZipTestFrame.this); if( r == JFileChooser.APPROVE_OPTION) { zipname = chooser.getSelectedFile().getPath(); scanZipFile(); } } } /** * Metoda pentru a vedea continutul din lista */ public void scanZipFile() { fileCombo.removeAllItems(); try { ZipInputStream zin = new ZipInputStream(new FileInputStream(zipname)); ZipEntry entry; while((entry = zin.getNextEntry()) != null) { fileCombo.addItem(entry.getName()); zin.closeEntry(); } zin.close(); } catch(IOException e) { e.printStackTrace(); } } /** * Afisarea filului din arhic in textarea * @param name Numele din arhiv */ public void loadZipFile(String name) { try { ZipInputStream zin = new ZipInputStream(new FileInputStream(zipname)); ZipEntry entry; fileText.setText(""); //Gasirea elemenutului care egal cu numele while((entry = zin.getNextEntry()) !=null) { if(entry.getName().equals(name)) { //Citirea filului si afisarea cintinutului in TextArea BufferedReader in = new BufferedReader(new InputStreamReader(zin)); String line; while((line = in.readLine()) != null) { fileText.append(line); fileText.append("\n"); } } zin.closeEntry(); } zin.close(); } catch(IOException e) { e.printStackTrace(); } } }