package com.hss.chap13;import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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;public class Chap13_03 { /**
* @param args
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
public void run() {
ZipFrame zf = new ZipFrame();
zf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
zf.setVisible(true);
}
}); }}class ZipFrame extends JFrame{
public ZipFrame(){
this.setBounds(200, 200, 500, 400);
this.setLayout(new BorderLayout());
//工具栏布局
JMenuBar jmb = new JMenuBar();
JMenu jm = new JMenu("file");
JMenuItem jmi1 = new JMenuItem("open");
JMenuItem jmi2 = new JMenuItem("exit");
jm.add(jmi1);
jm.add(jmi2);
jmb.add(jm);
this.setJMenuBar(jmb);
//添加处理事件
jmi1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JFileChooser jfc = new JFileChooser();
jfc.setCurrentDirectory(new File("."));
int r = jfc.showOpenDialog(ZipFrame.this);
if(r==JFileChooser.APPROVE_OPTION){
zipname=jfc.getSelectedFile().getPath();
try {
scannerFile();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
jmi2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//添加textarea
jta = new JTextArea();
jsc = new JScrollPane(jta);
//添加combobox
fileCombo = new JComboBox();
fileCombo.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
try {
loadFile((String)fileCombo.getSelectedItem());
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
this.add(jsc,BorderLayout.CENTER);
this.add(fileCombo,BorderLayout.SOUTH);
}
public void scannerFile() throws IOException{
//先将combox清空
fileCombo.removeAllItems();
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipname));
ZipEntry ze ;
while((ze=zis.getNextEntry())!=null){
fileCombo.addItem(ze.getName());
zis.closeEntry();
}
zis.close();
}
public void loadFile(String filename) throws Exception{
//先将显示区域清空
jta.setText("");
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipname));
ZipEntry ze;
while((ze=zis.getNextEntry())!=null){
System.out.println(ze.getName()+"---"+filename);
if(ze.getName().equals(filename)){
Scanner in = new Scanner(zis);
while(in.hasNextLine()){
String s = in.nextLine();
jta.append(s);
jta.append("\n");
}
}
zis.closeEntry();
}
zis.close();
}
private String zipname;
private JTextArea jta;
private JScrollPane jsc;
private JComboBox fileCombo;
}
代码可以执行, loadFile方法报java.lang.IllegalArgumentException,查了一下有的说是线程问题,有的地方说是参数问题,请大家帮我分析一下,异常原因。
解决方案 »
- 成员和局部变量问题
- 初学java,向各位高手请教个问题
- java i/o 的问题
- 父类和子类调用
- 大分求救:JBuilderX编译工程时,一遇到error就停止编译了,但是有不少包是没有error的,我想得到这些包编译后的class,怎么办???
- 怎么删除JDialog左上角的图标?
- java的数组操作问题.提示java.lang.NullPointerException.请帮我看看
- 老师让我们做基于C/S模式的即使消息通讯软件,怎么下手?
- 高分求救一个应用程序!~!!!!!
- 那位可以提供给我java的包,类函数。。的关系图???????????
- 求救大虾们,写的复制文件的程序问题到底出在哪里???
- 求助String转JSONObject问题
public static File zipFile(String zipName, File[] files) {
File file = new File(zipName); try {
ZipOutputStream out = new ZipOutputStream(file); for(int i = 0; i < files.length; i++) {
if(files[i] == null) {
continue;
} FileInputStream in = new FileInputStream(files[i]);
ZipEntry entry = new ZipEntry(files[i].getName().replaceAll("\\[.+\\]", ""));
out.putNextEntry(entry);
int len = 0;
byte[] bytes = new byte[256]; while((len = in.read(bytes, 0, bytes.length)) != -1) {
out.write(bytes, 0, len);
} out.closeEntry();
in.close();
} out.flush();
out.close();
}
catch(Exception e) {
e.printStackTrace();
} return file;
}