java 如何将多个文件打包成一个zip后进行下载

java 如何将多个文件打包成一个zip后进行下载,第1张

打包压缩的如下:

ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName))

for(int i=0i<逗稿握fileList.size()i++){

String filename = (String)fileList.get(i)

File file = new File(filename)

zip(out,file)

}

out.close()

下载的如下:

private int blockSize=65000

File file = new File(sourceFilePathName)

FileInputStream fileIn = new FileInputStream(file)

int readBytes = 0

readBytes = fileIn.read(b, 0, blockSize)

totalRead += readBytes

out.write(b, 0, readBytes)

代码大致敬派如此,请参考。山庆

向压缩包里添加文件时直接把服务器上的文念告闭件用流读进来就行,不用非把文件放到同仔裂一个目录,用程序生成压缩包和用命令行工具是不一样的,不要想当然。 写了个示例程序,你可以参考一下。这个示例不使用临时文件,把 OutputStream os替换成你下载用的输出流就可以实现一边压缩一边下载。注意java.util.zip不支持非ascii文件名。想支持中文文件名可以用apache ant或其他的库。

import java.io.*

import java.util.zip.ZipEntry

import java.util.zip.ZipOutputStream

public class ZipTest {

public static void main( String[] args ) {

try {

writeZip()

} catch ( IOException e ) {

e.printStackTrace()

}

}

private static void writeZip() throws IOException {

String[] files = { "/ws/dir1/file1", "/ws/dir2/file2", "/ws/file3"友察, "/pub/success.wav" }

OutputStream os = new BufferedOutputStream( new FileOutputStream( "/ws/archive.zip" ) )

ZipOutputStream zos = new ZipOutputStream( os )

byte[] buf = new byte[8192]

int len

for ( String filename : files ) {

File file = new File( filename )

if ( !file.isFile() ) continue

ZipEntry ze = new ZipEntry( file.getName() )

zos.putNextEntry( ze )

BufferedInputStream bis = new BufferedInputStream( new FileInputStream( file ) )

while ( ( len = bis.read( buf ) ) >0 ) {

zos.write( buf, 0, len )

}

zos.closeEntry()

}

zos.close()

}

}

一,下载inno setup

二,下载jre..去java官方下载

.这个是我将要打包的目录(netbeans编译后的dist文件夹)

然后把jre和相关的东东放进去,然后在里面加入一个go.cmd(bat)(名字随意啦)

Java代码

@echo off

echo 请稍后..安装Java运行环境ing

'如果没有java命令 则安装jre

java||jre-6u20-windows-i586.exe /q /norestart

start /MIN javaw -jar AutoCheckOut.jar

代码就像这样

解释下这里..

java||jre-6u20-windows-i586.exe /q /norestart

意思是..如果java这个命令执行不成功..则执行后面那句jre-6u20-windows-i586.exe /q /norestart

这句话是在安消岩宴静模式下安装jre,没有对话框

这部完成后

start /MIN javaw -jar AutoCheckOut.jar

可以让我们的拿银java程序在一个没有控制台的方式运行

然后你的目录大概就是这样的

好了.改枣拦下一步了

四,用inno创建setup.exe

打开inno

用向导创建

之后一步一步到这里

注意添加文件和文件夹 你添加的部分都是作为应用程序的根目录

这里改成我们刚才写的cmd(bat)文件

然后继续向前.按照你的喜好来改设置

最后到这里的时候

我们还要改小小的地方..不然的话..

1.[Files]里面

Source: "E:\JAVA\AutoCheckOut\dist\lib\*"DestDir: "{app}"Flags: ignoreversion recursesubdirs createallsubdirs

这一行 可以看到吧lib目录加到根目录区了..所以要改一下

Source: "E:\JAVA\AutoCheckOut\dist\lib\*"DestDir: "{app}\lib\"Flags: ignoreversion recursesubdirs createallsubdirs

2.[Icons]里面

Name: "{group}\{#MyAppName}"Filename: "{app}\{#MyAppExeName}"

需要多加一行

Name: "{group}\{#MyAppName}"Filename: "{app}\{#MyAppExeName}"WorkingDir: "{app}"

加这行是为了让cmd运行时有正常的工作目录


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12274878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存