java如何下载zip文件|如何使用java压缩文件夹成为zip包

|

Ⅰ 急!!!想实现通过java方式压缩文件并提供下载功能,在线等!!!

给你一个代码吧。 /** * 文件夹压缩。输入路径不能与输出路径相同 * zip("c:\\webserver\\test.zip","c:\\test1"); * @param zipFileName * @param inputFile * @throws Exception */ public static void zipFold(String zipFileName,String inputFilePath)throws Exception{ zip(zipFileName,new File(inputFilePath)); } private static void zip(String zipFileName,File inputFile)throws Exception{ ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName)); zipFold(out,inputFile,""); out.close(); } private static void zipFold(ZipOutputStream out,File f,String base)throws Exception{ if (f.isDirectory()) { File[] fl=f.listFiles(); base=base.length()==0?"":base+"/"; for (int i=0;i<fl.length ;i++ ) { zipFold(out,fl[i],base+fl[i].getName()); } } else { out.putNextEntry(new ZipEntry(base)); FileInputStream in=new FileInputStream(f); int b; while ((b=in.read()) != -1) out.write(b); in.close(); } }

Ⅱ JAVA 批量下载.zip

/** * 报表查询模块 —-文件下载流 * @return * @throws IOException */ public InputStream getInputStream() throws IOException { InputStream ins = new FileInputStream(zipReports()); return ins; } /** * 根据传过来的报表编号压缩文件为zip * @param response * @param serverPath * @param str * @throws IOException */ public File zipReports() throws IOException{ List<StatisticalReport> srclist = new ArrayList<StatisticalReport>(); String[] pks = ids.split(","); if(pks.length > 0){ for(String pk : pks){ String[] str = pk.split("\\|"); StatisticalReport obj = new StatisticalReport(); obj.setCendat(str[0]); obj.setOrgidt(str[1]); obj.setRep_code(str[2]); obj.setCurcde(str[3]); srclist.add(obj); } } StatisticalReport obj = new StatisticalReport(); obj.setReportList(srclist); //查询要下载的报表文件 List<StatisticalReport> list = statisticalReportService.findReportList(obj); //获取应用在服务器上的根目录 String path = request.getSession().getServletContext().getRealPath(System.getProperty("file.separator")); List<File> srcList = new ArrayList<File>(); if(list.size() > 0){ for(StatisticalReport statisticalReport : list){ File file = new File(statisticalReport.getFile_path()); if(file.exists()){ srcList.add(file); } } } Pim_sysUser user = (Pim_sysUser) session.getAttribute(SysConstant.SESSION_USER_DATA); File zipfile = new File(path + System.getProperty("file.separator") + user.getLogid() + "REPORT.zip"); if(zipfile.exists()){ zipfile.delete(); zipfile.createNewFile(); } //FileTools.File(, res.getString("help_path"), newFormatFileName);// 上传文件 ZipUtils.zipFiles(srcList, zipfile); return zipfile; }import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class ZipUtils { /** * 将多个Excel打包成zip文件 * * @param srcfile * @param zipfile */ public static void zipFiles(List<File> srcfile, File zipfile) { byte[] buf = new byte[2048]; try { // Create the ZIP file // Compress the files if(srcfile.size() > 0){ // 创建ZipOutputStream类对象 ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile)); for (int i = 0; i < srcfile.size(); i++) { File file = srcfile.get(i); FileInputStream in = new FileInputStream(file); // Add ZIP entry to output stream. out.putNextEntry(new ZipEntry(file.getName()));// 写入此目录的Entry 创建新的进入点 // Transfer bytes from the file to the ZIP file int len; while ((len = in.read(buf)) > 0) { out.setLevel(9); out.write(buf, 0, len); } // Complete the entry out.closeEntry(); in.close(); } out.close(); }else{ ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile)); out.putNextEntry(new ZipEntry(" ")); out.closeEntry(); out.close(); } // Complete the ZIP file } catch (IOException e) { e.printStackTrace(); } }}

Ⅲ java 下载异地FTP中的zip文件

好像需要一个支持jar包把,把ftp4j的下载地址贴出来

Ⅳ JAVA 点击下载按钮 下载ZIP文件

应该是乱码问题导致的,火狐的编码和IE对中文的编码是不一样的,两者兼顾很难啊。最好是在servlet里直接设置成英文名称,永久解决乱码问题

Ⅳ Java机可以下载rar,zip文件吗

我想你不是要这么问吧。。 但我知道你怎么想的。。java机只能运行 JAR格式的文件(包括游戏、QQ、等) 任何手机都可以下载rar,zip文件。因为是存在内存卡里。 java机只能认出 JAR格式的文件

Ⅵ java怎么实现zip下载

如果运行服务器用的是tomcat那么在系统的xml中增加zip类型,重启后,你点击就可以下载zip格式了。rar跟这个道理是一样的。如果不在配置文件中加类型,会在页面中打开这个zip或rar文件。

Ⅶ 急!给出一个URI,对应的是服务端的的一个zip包,客户端如何用java对它进行下载,

1:获取一个URL地址 2:解析URL,返回一个输入流3:客户端接收,将流中的内容保存//获取url并解析Url url = null;destUrl="http://127.0.0.1:8181/add_manage/js_home/890321.zip";//此处是http地址url = new URL(destUrl);httpUrl = (HttpURLConnection) url.openConnection();//连接指定的网络资源httpUrl.connect();//获取网络输入流bis = new BufferedInputStream(httpUrl.getInputStream());//保存资源fos = new FileOutputStream(fileName);if (this.DEBUG) System.out.println("正在获取链接[" + destUrl + "]的内容…\n将其保存为文件[" + fileName +"]");//保存文件while ( (size = bis.read(buf)) != -1)fos.write(buf, 0, size);//到此就可以实现下载的功能了!

Ⅷ java怎么下载压缩文件

可以用java的输入,输出流,设置返回的类型为下转 response.setContentType("application/x-download");//设置为下载application/x-download String filedownload = "/要下载的文件专名";//即将下载的文件的相对路径属 String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称 String filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);

Ⅸ 如何使用java压缩文件夹成为zip包

在JDK中有一个zip工具类:

java.util.zip Provides classes for reading and writing the standard ZIP and GZIP file formats.

使用此类可以将文件夹或者多个文件进行打包压缩操作。

在使用之前先了解关键方法:

ZipEntry(String name) Creates a new zip entry with the specified name.

使用ZipEntry的构造方法可以创建一个zip压缩文件包的实例,然后通过ZipOutputStream将待压缩的文件以流的形式写进该压缩包中。具体实现代码如下:

importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;/***将文件夹下面的文件*打包成zip压缩文件**@authoradmin**/publicfinalclassFileToZip{privateFileToZip(){}/***将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下*@paramsourceFilePath:待压缩的文件路径*@paramzipFilePath:压缩后存放路径*@paramfileName:压缩后文件的名称*@return*/publicstaticbooleanfileToZip(StringsourceFilePath,StringzipFilePath,StringfileName){booleanflag=false;FilesourceFile=newFile(sourceFilePath);FileInputStreamfis=null;BufferedInputStreambis=null;FileOutputStreamfos=null;ZipOutputStreamzos=null;if(sourceFile.exists()==false){System.out.println("待压缩的文件目录:"+sourceFilePath+"不存在.");}else{try{FilezipFile=newFile(zipFilePath+"/"+fileName+".zip");if(zipFile.exists()){System.out.println(zipFilePath+"目录下存在名字为:"+fileName+".zip"+"打包文件.");}else{File[]sourceFiles=sourceFile.listFiles();if(null==sourceFiles||sourceFiles.length<1){System.out.println("待压缩的文件目录:"+sourceFilePath+"里面不存在文件,无需压缩.");}else{fos=newFileOutputStream(zipFile);zos=newZipOutputStream(newBufferedOutputStream(fos));byte[]bufs=newbyte[1024*10];for(inti=0;i<sourceFiles.length;i++){//创建ZIP实体,并添加进压缩包ZipEntryzipEntry=newZipEntry(sourceFiles[i].getName());zos.putNextEntry(zipEntry);//读取待压缩的文件并写进压缩包里fis=newFileInputStream(sourceFiles[i]);bis=newBufferedInputStream(fis,1024*10);intread=0;while((read=bis.read(bufs,0,1024*10))!=-1){zos.write(bufs,0,read);}}flag=true;}}}catch(FileNotFoundExceptione){e.printStackTrace();thrownewRuntimeException(e);}catch(IOExceptione){e.printStackTrace();thrownewRuntimeException(e);}finally{//关闭流try{if(null!=bis)bis.close();if(null!=zos)zos.close();}catch(IOExceptione){e.printStackTrace();thrownewRuntimeException(e);}}}returnflag;}publicstaticvoidmain(String[]args){StringsourceFilePath="D:\TestFile";StringzipFilePath="D:\tmp";StringfileName="12700153file";booleanflag=FileToZip.fileToZip(sourceFilePath,zipFilePath,fileName);if(flag){System.out.println("文件打包成功!");}else{System.out.println("文件打包失败!");}}}

Ⅹ java中如何保证下载的压缩包命名中有中文

在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,但是同样如果有中文名的情况下依然会出现乱码情况。因此对于这种乱码的处理,一种是修改JDK下的几个源文件,一种就是把需要用的JDK源文件重新反编译进行处理,单独放在一个包中,在使用的时候,调用自己处理过的包中文件进行处理即可。附件tools.rar压缩文件是我进行处理过后的需要调用到的java源程序,主要为Deflater.java,DeflaterOutputStream.java,InflaterInputStream.java,ZipConstants.java,ZipEntry.java,ZipInputStram.java,ZipOutputStream.java文件,同时包含一个解压缩文件CompressZipFile.java


赞 (0)