- 浏览: 725488 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
import java.io.*; import java.util.Enumeration; import java.util.Vector; import java.awt.*; import java.awt.event.*; import javax.swing.*; import org.apache.tools.zip.*; //调用org.apache.tools.zip包,从压缩包中提取文件 public class ZipExtractDemo extends JFrame { private static final long serialVersionUID = 1L; JFileChooser fileChooser; // 文件选择器 JTextField jtfTarget; // 待解压文件路径 JButton jbSelected; // 选择文件按钮 JList files; // 信息显示列表框 JButton jbExtract; // 解压按钮 ZipFile zFile; public ZipExtractDemo() { super("从压缩包中提取文件"); // 调用父类构造函数 fileChooser = new JFileChooser(); // 实例化组件 jtfTarget = new JTextField(13); jbSelected = new JButton("选择"); jbExtract = new JButton("解压"); files = new JList(); JPanel panel = new JPanel(); // 实例化面板 panel.add(new JLabel("目标文件")); panel.add(jtfTarget); // 增加组件到面板上 panel.add(jbSelected); panel.add(jbExtract); JScrollPane jsp = new JScrollPane(files); // jsp.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // // 设置边界 Container container = getContentPane(); // 得以容器 container.add(panel, BorderLayout.NORTH); // 增加组件到容器上 container.add(jsp, BorderLayout.CENTER); jbSelected.addActionListener(new ActionListener() { // 文件选择按钮事件处理 public void actionPerformed(ActionEvent event) { // 弹出文件选择器,并判断是否点击了打开按钮 if (fileChooser.showOpenDialog(ZipExtractDemo.this) == JFileChooser.APPROVE_OPTION) { String fileName = fileChooser.getSelectedFile() .getAbsolutePath(); // 得到选择文件的绝对路径 jtfTarget.setText(fileName); // 设置目标文件名 // showFiles(); // 显示压缩包内容 addFileToCompress("d:\\about.txt", fileName, "D:\\test.jar"); } } }); jbExtract.addActionListener(new ActionListener() { // 解压文件按钮事件处理 public void actionPerformed(ActionEvent event) { extractFile(files.getSelectedValue().toString()); // 解压指定文件 System.out.println("解压:" + files.getSelectedValue().toString()); } }); setSize(350, 250); // 设置窗口尺寸 setVisible(true); // 设置窗口可视 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序 } /** * ********添加或覆盖一个文件到指定的压缩包中,参数一:资源文件路径,即需要添加的文件;***** * ********参数二:压缩包的路径;参数三:添加文件后生成新的压缩包的路径***** */ public void addFileToCompress(String res, String com, String out) { try { // 如果res文件与其它文件相同,此值将设为true并让res覆盖原有文件, // 如果最后此值为false,则添加res文件 boolean same = false; System.out.println("资源文件路径" + res + " , " + com); int index = res.lastIndexOf("\\") + 1;// 得到最后一个"\"符号的索引 String name = res.substring(index, res.length());// 截取文件名 // 文件输出流,生成out路径,也可以用此流写入数据并生成文件 FileOutputStream fos = new FileOutputStream(out); // 压缩输出流,通过此流把数据写放压缩包中 ZipOutputStream zOut = new ZipOutputStream(fos); // 压缩文件包,用于从压缩文件中读取条目 ZipFile zFile = new ZipFile(com); // 取得遍历条目对象 Enumeration enu = zFile.getEntries(); while (enu.hasMoreElements()) {// 判断是否有下一个遍历对象 // 取得遍历到的对象 ZipEntry zEntry = (ZipEntry) enu.nextElement(); // 得到对象名称,它包涵目录路径 String zEnName = zEntry.getName(); // 得到最后一个"/"符号的索引 int zEnIndex = zEnName.lastIndexOf("/") + 1; // 去除目录路径,取得纯文件名 String zEnSubName = zEnName.substring(zEnIndex, zEnName .length()); // 设置下一个要创建的Entry对象 zOut.putNextEntry(zEntry); // 判断名字是否一致,如果一致则写入指定的文件,否则写入原来的文件 if (zEnSubName.equals(name)) { // 文件输入流 FileInputStream fis = new FileInputStream(res); int len;// 长度 // 读取数据直到读完为止 while ((len = fis.read()) != -1) zOut.write(len); // 关闭输入流 fis.close(); same = true; } else { // 文件输入流 InputStream is = zFile.getInputStream(zEntry); int len;// 长度 // 读取数据直到读完为止 while ((len = is.read()) != -1) zOut.write(len); // 关闭输入流 is.close(); } } if (same == false) { // 设置下一个要创建的Entry对象 zOut.putNextEntry(new ZipEntry(name)); // 文件输入流 FileInputStream fis = new FileInputStream(res); int len;// 长度 // 读取数据直到读完为止 while ((len = fis.read()) != -1) zOut.write(len); // 关闭输入流 fis.close(); } // 关闭压缩输入流,此步骤是必须的,如果没有关闭则会让生成压缩包损坏 zOut.close(); } catch (Exception e) { e.printStackTrace(); } } /** 参数一:压缩输出流对象(此流用于写入数据并生成文件),参数二:需要压缩的File对象,参数三:根目录,即压缩包中的文件夹目录 */ public void zip(ZipOutputStream zOut, File file, String base) { try { System.out.println("正在压缩-->" + file.getName()); if (file.isDirectory()) { File[] listFiles = file.listFiles(); /* * 此处解决压缩未端数据不正确,这是判断当前是什么系统,普遍是Windows所以在这里就不注释不做此判断. if * (System.getProperty("os.name").startsWith("Windows")) { base = * base.length() == 0 ? "" : base + "\\"; out.putNextEntry(new * ZipEntry(base)); } else { base = base.length() == 0 ? "" : * base + "/"; out.putNextEntry(new ZipEntry(base)); } * 一般来说用"/"符号来分割出文件与文件夹是没有问题的 */ zOut.putNextEntry(new ZipEntry(base + "/")); base = base.length() == 0 ? "" : base + "/"; for (int i = 0; i < listFiles.length; i++) { zip(zOut, listFiles[i], base + listFiles[i].getName()); // System.out.println(new // String(fl[i].getName().getBytes("gb2312"))); } } else { if (base == "") { base = file.getName(); } zOut.putNextEntry(new ZipEntry(base)); FileInputStream in = new FileInputStream(file); int len; while ((len = in.read()) != -1) zOut.write(len); in.close(); } } catch (Exception e) { e.printStackTrace(); } } public void showFiles() { try { zFile = new ZipFile(jtfTarget.getText()); // 得到压缩文件实例 ZipEntry entry; Vector vec = new Vector(); // 文件枚举 Enumeration enu = zFile.getEntries(); // 得到压缩条目的枚举对象 while (enu.hasMoreElements()) { // 依次枚举条目 entry = (ZipEntry) enu.nextElement(); // 得到压缩条目 vec.add(entry.getName()); // 增加文件到Vector内 } files.setListData(vec); // 设置文件列表框数据 files.getSelectedValues(); } catch (Exception ex) { ex.printStackTrace(); // 输出错误信息 } } public void extractFile(String name) { // 解压文件 try { ZipEntry entry = zFile.getEntry(name); entry.getComment(); entry.getCompressedSize(); entry.getCrc(); entry.isDirectory(); entry.getSize(); entry.getMethod(); InputStream in = zFile.getInputStream(entry); // 得到文件输入流 File file = new File("D://index.txt"); // 实例化文件对象 FileOutputStream out = new FileOutputStream(file); // 得到文件输出流 byte[] buffer = new byte[1024]; // 缓冲区大小 int length = 0; while ((length = in.read(buffer)) != -1) { // 循环读取数据 out.write(buffer, 0, length); // 写数据到输出流 } JOptionPane.showMessageDialog(ZipExtractDemo.this, "解压成功,解压到:" + file.getAbsolutePath()); in.close(); // 关闭输入流 out.close(); // 关闭输出流 } catch (Exception ex) { } } public static void main(String[] args) { new ZipExtractDemo(); } }
发表评论
-
Java序列化与反序列化
2012-09-20 08:39 1474在JAVA中,一个大的应用程序需要保存很多对象的时候,由于虚拟 ... -
Java实现的8大排序算法
2012-07-12 13:22 16128种排序之 ... -
Java基础之软引用、弱引用、虚引用
2012-06-18 10:02 11141、概述 在JDK1.2以前 ... -
Java中的String对象特性
2012-05-28 15:28 10441. 首先String不属于8种基本数据类型,String是一 ... -
java反射与内省(Introspector)
2012-03-17 16:06 1133一、java反射机制 JAVA反射机制是在运行状 ... -
ArrayList Vector LinkedLis的区别与用法及数据结构
2011-12-28 22:33 1632ArrayList 和Vector是采用数组方式存储数据,此数 ... -
Java实现后台按键事件监听(注册系统级热键)
2011-08-10 13:54 5857所谓系统级热键就是指一组快捷键,不论当前系统焦点在哪个程序中, ... -
Jocky混淆JAVA代码(保护你的JAVA项目)
2010-12-01 14:52 1844Jocky混淆JAVA代码(保护 ... -
Java将彩色图片转换为灰色图片
2010-08-06 11:26 4936import java.applet.*; import j ... -
Java设置系统时间与网络标准时间同步
2010-05-18 09:51 7346Java校正电脑时间(java 时 ... -
在汉字库中寻找某个汉字的点阵数据
2010-04-22 21:21 2025在计算机中英文可以使 ... -
Serializable,利用序列化来做深度拷贝
2010-04-08 12:38 1690package Assis; import java.i ... -
演示MediaTracker的作用
2010-01-25 16:16 2924package Assis; //TrackedImag ... -
Java图片处理 文字水印 图片水印 缩放 补白
2010-01-25 13:29 1431import java.awt.AlphaComposite; ... -
Java下Class.forName的作用是什么,为什么要使用它
2010-01-20 19:41 1344Class.forName(xxx.xx.xx) 返回的是一个 ... -
JDK1.6官方下载_JDK6官方下载_JDK1.6API(chm)下载_JDK6APICHM中文参
2009-12-21 17:47 192396JDK1.6官方下载_JDK6官方下载地址:http://ww ... -
PNG格式文件结构详解
2009-12-10 15:09 2092前言 我们都知道,在进行J2ME的手机应用程序开发的时候,在 ... -
求一定范围内的质数
2009-11-27 17:14 1404import javax.microedition.midle ... -
调用org.apache.tools.zip实现压缩
2009-08-22 16:09 2050/* 调用org.apache.tools.zip ... -
重新绘制界面,repaint()函数的作用
2009-08-22 16:02 2333import java.awt.Color; import ...
相关推荐
java调用ant构建打包,java调用ant构建打包,java调用ant构建打包,java调用ant构建打包,
上传了收集的最新的 commons-io-2.4.jar 包 和 commons-net-3.3.jar 以及 FTP java调用例子。net 包是一个用于操作Internet基础协议(Finger,Whois,TFTP,Telnet,POP3,FTP,NNTP,以及SMTP)的底层API。Net包...
包括import org.apache.soap.util.xml.*; import org.apache.soap.*;import org.apache.soap.rpc等,以及各个版本下载地址
java调用webservicejava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava...
57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip...
55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java...
初学调用webservice的demo,适合初学者入门,资源包括axis2的库文件,以及org.apache.mina等库文件
Java中递归逻辑循环调用解压zip里面所有的压缩包 Java中递归逻辑循环调用解压zip里面所有的压缩包
TelnetClient包,TelnetClient类根据RFC 854为Telnet协议实现了简单网络虚拟终端(NVT)。它没有实现任何其他Telnet选项,因为它打算在Java程序中使用,以提供对Telnet可访问资源的自动访问。 可以通过首先使用Socket...
我在进行MapReduce本地测试的时候,遇见下面的报错: ...解决方法:①第一步:在项目工程中加入NativelO.java,注意包名必须与源码中一致 ②第二步:将access方法的返回值改为true,不让他去调用access0() 类似
纵观目前主流的 ORM(对象关系映射),无论 Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 ...
C# 调用ICSharpCode.SharpZipLib.dll组件压缩解压zip vs2010开发,低版本的如果打不开项目,请参阅: http://www.cnblogs.com/boyliupan/archive/2010/06/22/1762726.html
VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件,网上很多源码不好用,所以就自己做了一个。原始代码是VC++的用VS2019编译了一个,DLL封装了下。调用很简单 '调用方法如下: 'CreateZipFileA "C:\123", "C:\123.zip...
org.eclipse.swt 相关jar包,JAVA调用火狐内核制作浏览器教程中所需,供各位下载,可在我的博客中查看详细用法。
在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,...
调用WSDL2Java需要相关jars,使用-cp添加进来,不支持使用通配符。提醒:Linux下jar之间使用冒号隔开:...wsdl4j-1.4.jar org.apache.axis.wsdl.WSDL2Java http://*.*.*.*/SMSWebService/services/sigMessageServices?wsdl
基于Flask对PaddleOCR进行部署项目源码+项目说明(方便调用).zip 基于Flask对PaddleOCR进行部署项目源码+项目说明(方便调用).zip 基于Flask对PaddleOCR进行部署项目源码+项目说明(方便调用).zip 基于Flask对...
c#调用refprop.dll文件来查物性参数, 只是封装的代码,refprop.dll需要自己下载。下载1分,没分的消息给我。
Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。 public class ZipDemo extends JFrame{ JFileChooser fileChooser; //文件选择器 JList fileList; //待...