程序不是很完善,估计有n中死法
设计思想 打开一个zip文件时,屏幕底部显示zip里面的所有文件,当选择一个文件时,返回对其描叙
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.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;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;
public class ZipTestG {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ZipFrame frame=new ZipFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//设置观感
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(frame);
}
catch(Exception e)
{e.printStackTrace();}
}
}
class ZipFrame extends JFrame
{
public ZipFrame()
{
setTitle("Zip Test by guan");
setSize(300,300);
JMenuBar bar =new JMenuBar();
JMenu file=new JMenu("File");
JMenuItem open=new JMenuItem("Open");
JMenuItem close=new JMenuItem("Close");
open.addActionListener(new OpenListener());
close.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
bar.add(file);
file.add(open);
file.add(close);
setJMenuBar(bar);
textArea=new JTextArea(8,10);
combo=new JComboBox();
combo.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
String textname=(String) combo.getSelectedItem();
LoadText(textname);
}
});
add(new JScrollPane(textArea),BorderLayout.CENTER);
add(combo,BorderLayout.SOUTH);
}
class OpenListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setMultiSelectionEnabled(false);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
FileNameExtensionFilter filter=new FileNameExtensionFilter("zip file","zip","rar");
chooser.setFileFilter(filter);
int result=chooser.showOpenDialog(ZipFrame.this);
if(result==JFileChooser.APPROVE_OPTION)
{
String name=(String) chooser.getSelectedFile().getPath();
ScanZip(name);
}
}
}
//用来设置复选框的
public void ScanZip(String name)
{
combo.removeAllItems();
try
{
ZipInputStream in=new ZipInputStream(new FileInputStream(name));
ZipEntry entry;
while((entry=in.getNextEntry())!=null)
{
combo.addItem(entry.getName());
}
in.close();
}
catch(IOException e)
{e.printStackTrace();}
}
加载文本区
public void LoadText(String name)
{
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(name));
ZipEntry entry;
textArea.setText("");
while((entry=zin.getNextEntry())!=null)
{
if(entry.getName().equals(name))
{
BufferedReader in=new BufferedReader(new InputStreamReader(zin));
String line;
while((line=in.readLine())!=null)
{
textArea.append(line);
textArea.append("\n");
}
in.close();
}
//这里很重要
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{e.printStackTrace();}
}
private JTextArea textArea;
private JComboBox combo;
}