改編關於ZipInputStream的一個小程序

 程序不是很完善,估計有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;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章