⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zippeddirectorydialog.java

📁 MSN聊天软件Java版是一个韩国人做的java版的msn程序。可以学习参考一下。
💻 JAVA
字号:
/* * @(#)ZippedDirectoryDialog.java * * Copyright (c) 2002, Jang-Ho Hwang * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 	1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 	2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 	3. Neither the name of the Jang-Ho Hwang nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *    $Id: ZippedDirectoryDialog.java,v 1.2 2002/03/13 09:40:39 xrath Exp $ */package rath.jmsn.ui;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.File;import java.io.IOException;import rath.jmsn.ToolBox;import rath.jmsn.ui.DefaultDialog;import rath.jmsn.util.Msg;import rath.util.ZipManager;/** * 叼泛配府甫 ProgressBar甫 焊咯林哥 拘绵窍绊, 拘绵茄 颇老阑 馆券秦林绰 促捞倔肺弊. * * @author Jangho Hwang, rath@linuxkorea.co.kr * @version $Id: ZippedDirectoryDialog.java,v 1.2 2002/03/13 09:40:39 xrath Exp $ */public class ZippedDirectoryDialog extends DefaultDialog implements ToolBox{	private File dir = null;	private File temp = null;	private ZipManager zip = null;	private JLabel statusLabel = null;	private JProgressBar progress = null;	private boolean isComplete = false;	private Thread zipThread = null;    public ZippedDirectoryDialog( Frame owner, File dir )    {		super( owner );		this.dir = dir;		this.temp = new File( System.getProperty("java.io.tmpdir"), dir.getName() + ".zip" );		this.zip = new ZipManager() {			protected void compressComplete( File file )			{				increaseProgress();			}		};		this.zip.setArchiveRoot( dir.getAbsolutePath() );		createUI();    }	private void increaseProgress()	{		SwingUtilities.invokeLater( new Runnable() {		    public void run()			{				int current = progress.getValue() + 1;				int max = progress.getMaximum();				int percent = (int)(((float)current / (float)max) * 100.0f);				progress.setValue( current );				progress.setString( percent + "%" );				if( percent==100 )				{					isComplete = true;					dispose();				}			}		});	}	private void processError( final IOException e )	{		SwingUtilities.invokeLater( new Runnable() {			public void run()			{				statusLabel.setText( Msg.get("zipdlg.msg.fail", e.getMessage()) );				try				{					Thread.currentThread().sleep( 2000L );				}				catch( InterruptedException ex ) {}				temp = null;				dispose();			}		});	}	private void createUI()	{		setSize( 250, 100 );		JPanel panel = (JPanel)getContentPane();		panel.setLayout( new BorderLayout() );		statusLabel = new JLabel( Msg.get("zipdlg.msg.ready"), SwingConstants.CENTER );		statusLabel.setFont( FONT );		progress = new JProgressBar();		progress.setStringPainted( true );		panel.add( statusLabel, "Center" );		panel.add( progress, "South" );		addComponentListener( new ComponentAdapter() {			public void componentShown( ComponentEvent e )			{				doStart();			}		});	}	/**	 * EventDispatchThread 郴何俊辑 荐青等促.	 */	protected void doStart()	{		if( zipThread==null )		{		    progress.setMaximum( getFileCount(dir) );			statusLabel.setText( Msg.get("zipdlg.msg.working") );			zipThread = new Thread( new Runnable() {				public void run()				{					try					{					    zip.doCompress( dir, temp );					}					catch( IOException e )					{						processError(e);					}				}			});			zipThread.start();		}	}	private int getFileCount( File dir )	{		return recursiveDirectory( dir );	}	private int recursiveDirectory( File dir )	{		int count = 0;		File[] files = dir.listFiles();		for(int i=0; i<files.length; i++)		{			File f = files[i];			if( f.isDirectory() )				count += recursiveDirectory(f);			else				count++;		}		return count;	}	public void dispose()	{		if( zipThread!=null )		{			if( !isComplete )			{			    zipThread.interrupt();				temp.deleteOnExit();			}		}		super.dispose();	}	public File getZippedFile()	{	    return isComplete ? this.temp : null;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -