打jar包

package com.servlet;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.zeroturnaround.zip.ByteSource;
import org.zeroturnaround.zip.FileSource;
import org.zeroturnaround.zip.ZipEntrySource;
import org.zeroturnaround.zip.ZipUtil;
/**
* @author [email protected] (Chirs Chou)
*/
public class ColorServlet extends HttpServlet{
public void init(ServletConfig config){
System.out.println("初始化");
}

/**
* 应用于文件下载接口
*
* @param request
* @param response
*
* @throws javax.servlet.ServletException
* @throws java.io.IOException
*/
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
// String rootPath=ColorServlet.class.getClassLoader().getResource("/").getPath();
downloadZip(request,response);
}
private void downloadZip(HttpServletRequest request,HttpServletResponse response){
String rootPath=request.getSession().getServletContext().getRealPath("/WEB-INF");
System.out.print("----"+rootPath);
String colorStr = request.getParameter("color")!=null?request.getParameter("color"):"";
File findex = new File(rootPath+"/data/index.html");
File f = new File(rootPath+"/data/config.css");
File fzip = new File(rootPath+"/data/demo.zip");
String newZipPath = rootPath+"/data/new.zip";
BufferedWriter bw;
try {
createFile(f);
ZipEntrySource[] entries = new ZipEntrySource[] {
new FileSource("index.html", findex),
new ByteSource("config.css",getBytes(rootPath+"/data/config.css"))
};

java.io.FileOutputStream writerStream = new java.io.FileOutputStream(f );
bw = new BufferedWriter(new java.io.OutputStreamWriter(writerStream, "UTF-8"));
bw.write(colorStr);// 写文件
bw.flush();
bw.close();
//ZipUtil.addEntry(fzip,"index.html3243",f,new File(newZipPath));
ZipUtil.addEntries(fzip, entries, new File(newZipPath));

//开始下载新的zip包
downLoadFile(response,newZipPath,"nowColor.zip",false);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
System.out.print("doPost------");
downloadZip(request,response);
}

public static void makeDir(File dir) {
if(! dir.getParentFile().exists()) {
makeDir(dir.getParentFile());
}
dir.mkdir();
}

public static boolean createFile(File file) throws IOException {
if(! file.exists()) {
makeDir(file.getParentFile());
}
return file.createNewFile();
}

/**
* 通过响应输出流实现文件下载
*
* @param response 响应的请求
* @param fileLocal 文件的绝对路径 请用/斜杠表示路径
* @param downloadName 自定义的文件名 ( 不要后缀),如果此值为空则使用时间日期做为默认的文件名
* @param deleFile 下载完成后是否删除文件(true: 删除 , false:不删除)
*/
public void downLoadFile(HttpServletResponse response,String fileLocal,String downloadName,boolean deleFile){
InputStream in=null;
OutputStream out=null;
try{
if(!"".equals(downloadName)){
downloadName=downloadName+fileLocal.substring(fileLocal.lastIndexOf("."));
}else{
downloadName=fileLocal.substring(fileLocal.lastIndexOf("/")+1);
}
response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(downloadName,"UTF-8"));
in=new FileInputStream(fileLocal);
int len=0;
byte buffer[]=new byte[1024];
out=response.getOutputStream();
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(in!=null){
try{
//
in.close();
if(deleFile){
Thread.sleep(1000l);
File file=new File(fileLocal);
file.delete();
}
}catch(Exception e){
}
}
}
}

/**
* 获得指定文件的byte数组
*/
private byte[] getBytes(String filePath){
byte[] buffer = null;
try {
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buffer;
}

/**
* 根据byte数组,生成文件
*/
public static void getFile(byte[] bfile, String filePath,String fileName) {
BufferedOutputStream bos = null;
FileOutputStream fos = null;
File file = null;
try {
File dir = new File(filePath);
if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在
dir.mkdirs();
}
file = new File(filePath+"\\"+fileName);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(bfile);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}

}

时间: 2024-08-25 19:43:31

打jar包的相关文章

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

maven的jar包存储的位置

从Maven中心仓库下载到本地的jar包的默认存放在"${user.home}/.m2/repository"中,${user.home}表示当前登录系统的用户目录(如"C:\Users\gacl"), 点击进入repository文件夹, Jar包存放在这个位置不太好,我们希望能够自己定义下载下来的jar包的存放位置,因此我们可以自己设置下载到本地时的jar包的存放目录. 在"E:\"目录下创建一个"repository"文

MySql Jar 包下载

MySql JAR 包下载 我们要使用Spring 链接MySql  需要两个Jar 包   一个是C3p0   一个是MySql 的Connection Jar  包 C3p0: 进入下面的网址 http://www.mchange.com/projects/c3p0/ 按照黄色的指示  下载 2. MySql Jar 包 进入MySql 官网 https://dev.mysql.com/downloads 选择需要的Jar 包  下载   解压

Maven 手动添加 JAR 包到本地仓库

Maven 确确实实是个好东西,用来管理项目显得很方便,但是如果是通过 Maven 来远程下载 JAR 包的话,我宿舍的带宽是4兆的,4个人共用,有时候用 Maven 来远程下载 JAR 包会显得很慢,一般我发现下载速度不明显的时候,我就 Ctrl + C 来终止它的下载.然后改用手动来下载,因为用迅雷一类的工具来下载会快很多.我机子上 Maven 的本地仓库的很多 JAR 包我都是手动下载的.手动下载的话就会带来一个问题,就是,怎么样手动将下载下来的 JAR 包添加到 Maven 的本地仓库.

使用fatjar来实现将包含第三方jar包的项目到处成一个jar包供其他程序使用

一.在线安装fat jar 在线安装步骤: eclipse菜单栏 help >software updates >Search for new features to install>new update site> 填写name 和url name:任意起个, 就写fat吧 url:这个是fat jar的地址  输入http://kurucz-grafika.de/fatjar 二.fat-jar的使用 1.第一步,选中项目根节点后,点击右键,在弹出菜单中选择Build Fat

android 引入第三方jar包 找不到类

============问题描述============ 我的android项目,引入第三方jar包的方法是将引入的六个json包放到项目的lib文件夹里,通过添加到userlib中,在项目中引用userlib,项目这样部署,编译阶段没有报错一切正常 ,但是在运行的时候,就会报javanotfound的错误,找不到json包中的一个JSONObject这个类!  上网查过了,还是试过其他的方法,直接通过Add ExternalJARS...方法引入,但是更不行,直接报错[2012-02-29 1

maven五:查找jar包坐标,选择jar包版本

查找jar包坐标 以spring core的jar包为例,访问http://www.mvnrepository.com/    在最上方中间,输入spring core,点击Search. 搜索结果第一个就是,点击spring core 有很多版本,这里点击4.3.5.RELEASE 点击maven栏里面的内容,允许访问,会复制到剪贴板 然后直接粘贴到pom.xml文件的<dependencies>里面,eclipse右下角就会提示下载.下载完成完,项目中就会成功添加这两个包 选择jar包版本

spring_boot打jar包及打包错误的解决方法

问题产生及解决 对于刚接手spring_boot的人,可能会感觉到很茫然无措,看到书上写的spring_boot是直接打包成jar包,使用java -jar *运行.然而却不知道该怎么打包.而创建spring_boot以后在pom文件中会安装spring_boot打包插件,此时我们会看到如下几个选项: pom文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt

利用Eclipse+maven编译Jedis源码成jar包和源码jar包

在GitHub上面,有很多源码都是maven项目,但是很多都没有jar包.去网上找到话第一个是比较难找,第二个是怕不够原汁原味.我们通过maven+Eclipse可以可视化将maven项目生成jar库包还有源码jar包. 1.下载maven 下载地址:http://maven.apache.org/download.html 2,解压 到本地: 3,配置环境变量 3-1,要先配置java-home变量. 新建系统变量,写入java-home值. 在系统变量的path里面添加  %JAVA_HOM

Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图

Maven 组件界面介绍 如上图标注 1 所示,为常用的 Maven 工具栏,其中最常用的有: 第一个按钮:Reimport All Maven Projects 表示根据 pom.xml 重新载入项目.一般单我们在 pom.xml 添加了依赖包或是插件的时候,发现标注 4 的依赖区中没有看到最新写的依赖的话,可以尝试点击此按钮进行项目的重新载入. 第六个按钮:Execute Maven Goal 弹出可执行的 Maven 命令的输入框.有些情况下我们需要通过书写某些执行命令来构建项目,就可以通