看了一篇瘦身文件、记录一下、http://nonconductor.bokee.com/5085956.html
源代码如下
/*
* Alipay.com Inc.
* Copyright (c) 2004-2008 All Rights Reserved.
*/
package com.beyond.web.trade;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;
public class Packager {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
File f = new File("C:/Documents and Settings/en.xuze/hello.list");
Packager pkger = new Packager();
pkger.debugEnabled = true;
List ret = pkger.parseOutput(new FileInputStream(f));
pkger.pkgResources(ret, "C:/Documents and Settings/en.xuze/Hello.jar");
}
private boolean debugEnabled;
public List parseOutput(InputStream in) throws IOException {
ArrayList ret = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = reader.readLine();
while (line != null) {
if (line.matches("\\[Loaded .* from .*")) {
if (debugEnabled)
System.out.println("Matches:" + line);
ret.add(line.substring(8, line.indexOf(" from ")));
} else {
if (debugEnabled)
System.out.println("UnMatches:" + line);
}
line = reader.readLine();
}
return ret;
}
public void pkgResources(List res, String fileName) throws IOException {
File f = new File(fileName);
if (!f.exists()) {
f.createNewFile();
}
byte[] buf = new byte[1024];
JarOutputStream out = new JarOutputStream(new FileOutputStream(fileName));
for (Iterator iterator = res.iterator(); iterator.hasNext();) {
InputStream in = null;
try {
String s = (String) iterator.next();
s = s.replace('.', '/') + ".class";
if (debugEnabled) {
System.out.println("adding: " + s);
}
in = this.getClass().getClassLoader().getResourceAsStream(s);
out.putNextEntry(new ZipEntry(s));
int w = in.read(buf);
while (w >= 0) {
out.write(buf, 0, w);
w = in.read(buf);
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
} finally {
in.close();
}
}
out.finish();
out.close();
}
}
分享到:
相关推荐
在本文中,我们将深入探讨Delphi程序打包的基本步骤、工具以及注意事项,以帮助你实现一个高效且用户友好的打包过程。 1. **Delphi程序的基本结构** Delphi程序通常由多个单元(Units)组成,每个单元包含特定的类...
首先,你需要确保已经编写好了一个完整的Java项目,包括必要的类、资源文件以及可能需要的外部库。在这个过程中,JDBC驱动包是关键,因为它们允许Java程序连接到数据库。确保你的项目中包含了这些JDBC驱动的jar文件...
- 尽量遵循版权规定,不要非法打包受版权保护的软件或资源。 通过以上内容,我们可以了解到Enigma Virtual Box作为一款强大的打包工具,如何帮助开发者创建便携、独立的软件,并提供了相关的测试和学习资源。在...
通过分析和理解这些源代码,你可以逐步掌握Java游戏开发的基本技巧,并且随着经验的增长,可以尝试将学到的知识应用到更复杂的游戏项目中去。同时,不要忘记实践是提升编程技能的最佳途径,尝试修改代码,加入新的...
"RDB打包解包工具"是一个专为处理这类文件而设计的实用程序。这个工具的主要功能是对RDB文件进行解包和打包,以便用户可以自定义或修改其中的内容,比如在本例中,是为了修改QQ2011的透明皮肤。 首先,`System.Core...
通过以上讲解,你应能理解如何在不同编程语言中实现ini配置文件的读写,并了解源码打包的基本概念。对于提供的`readwriteinifile_test`文件,它可能包含了测试读写ini文件功能的代码,你可以根据所使用的编程语言...
`WebSettings`类提供了许多其他配置选项,如设置缓存策略、字体大小、用户可缩放等: ```java webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // 使用缓存,否则加载网络 webSettings....
4. **Animation**:为了使侧滑菜单的滑入滑出效果更加平滑,你需要掌握Android中的动画API,如ObjectAnimator、TranslateAnimation或属性动画系统。 5. **Fragment**:在侧滑菜单中,各个选项通常由Fragment表示,...
一旦你有一个基本的功能匹配器工作,尝试一些改进并记录你的结果。 具体作业要求参见Project1.ipynb。 全景图像拼接 启动Jupyter并打开Project2.ipynb。 在本项目中,你将实现一个全景图像拼接器。这将建立在项目 1 ...
如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品。 2. 文件名(File Names) 文件名是 Java 程序的基本组成部分。Java 程序使用以下文件后缀:.java(Java ...
在开发过程中,你需要学习如何利用这些工具和资源,遵循游戏引擎提供的API,创建新的游戏对象、改变游戏逻辑或添加新的功能。同时,你也需要了解游戏数据结构和工作原理,以便于更好地集成你的模组。 最后,不要...
在贪吃蛇游戏中,你需要理解基本的数据类型、变量、控制结构(如循环和条件语句)、类和对象的概念。 2. **Windows Forms**:这是.NET Framework提供的一个用于构建桌面应用程序的库。在本项目中,你将创建一个...
学习Java,你需要掌握基本的数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。此外,还有引用类型,如类、接口和数组,它们都是对象的引用。 流程控制...
质量保修书这类文件可能涉及法律条款和责任规定,因此需要妥善保管,防止未经授权的访问或修改。这通常通过使用文档管理系统来实现,这些系统可以跟踪文件的版本历史,设置访问权限,并确保数据安全。 此外,对于...
首先,你需要将`itextsharp.dll`导入到你的项目中,这样就可以调用它的类和方法来构建PDF文档。 在C#中创建PDF的第一步是创建一个PdfWriter实例,它负责将内容写入PDF文件。接着,你可以创建一个PdfDocument对象,...
你需要学习如何定义类,创建对象,以及使用类的成员(数据成员和成员函数)。 8. **构造函数与析构函数**:构造函数用于初始化对象,析构函数则在对象生命周期结束时执行清理工作。 9. **友元**:友元函数或友元类...
开发者可能需要将其他格式的图片转换为适合平台的格式。 8. **测试与调试**:在测试阶段,这些图片可能需要频繁调整和更新,确保它们在不同设备和屏幕分辨率上显示正常。开发者会使用模拟器和真机进行多设备测试,...
学习Qt编程,你需要掌握以下知识点: 1. **安装与环境配置**:在Linux系统上,你可以通过包管理器安装Qt开发工具,如Qt Creator和必要的编译器。了解如何配置Qt Creator的项目构建设置,确保编译器和运行环境正确...
其它如果没有必要的话,则按默认即可,点击+号添加类路径:基本上你所需要用到的 Jar 文件都要添加上去,可以逐个添加上去,也可以添加整个文件夹或者使用系统环境变量,为了使你的程序能够随处运行,所以还是强列...
JAR文件是Java程序常用的打包格式,它包含了一系列的类文件、资源文件以及元数据,可以作为一个单独的模块执行或供其他程序使用。 总结来说,这个压缩包包含的SSH相关文件可能涉及以下知识点: 1. SSH协议:了解其...