Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Zk框架下载zip_Java_File_Download_Zip_Zk - Fatal编程技术网

Java 使用Zk框架下载zip

Java 使用Zk框架下载zip,java,file,download,zip,zk,Java,File,Download,Zip,Zk,我正在使用JDK 1.8、tomcat 7.0、ZK 8.0.2.2和jsf-2.2.8,我的web inf/lib中有ZK框架JAR的Fowling: zcommon-8.0.2.2.jar zel-8.0.2.2.jar zk-8.0.2.2.jar zul-8.0.2.2.jar zweb-8.0.2.2.jar bsh-2.0b6.jar commons-codec-1.8.jar commons-fileupload-1.2.2.jar javassist-3.18.2-GA.jar

我正在使用JDK 1.8、tomcat 7.0、ZK 8.0.2.2和jsf-2.2.8,我的web inf/lib中有ZK框架JAR的Fowling:

zcommon-8.0.2.2.jar

zel-8.0.2.2.jar

zk-8.0.2.2.jar

zul-8.0.2.2.jar

zweb-8.0.2.2.jar

bsh-2.0b6.jar

commons-codec-1.8.jar

commons-fileupload-1.2.2.jar

javassist-3.18.2-GA.jar

slf4j-api-1.7.5.jar

slf4j-jdk14-1.7.5.jar

我成功地创建了一个包含4个文件的zip文件

下面是创建zip文件的函数 公共类FileDownloadServer{

   public static void getZipFile(List<String> fileList, String fileZip, String sourcePath){
    byte[] buffer = new byte[2014];
    try {
        FileOutputStream fos = new FileOutputStream(fileZip);
        ZipOutputStream zos = new ZipOutputStream(fos);

        for(String file : fileList){
            ZipEntry ze= new ZipEntry(file);
            zos.putNextEntry(ze);
            System.out.println("avant");
            FileInputStream in = new FileInputStream(sourcePath + File.separator + file);
            System.out.println("aprés");
             int len;
             while ((len = in.read(buffer)) > 0) {
                    zos.write(buffer, 0, len);
             }
             in.close();
        }
         zos.closeEntry();
         zos.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
 }


    }
我感谢你的帮助


谢谢。

为将来的读者总结一下:
Filedownload.save()
中失败的一行尝试检索当前的
执行
,当您在工作线程(即无法访问
桌面
的线程)中调用
save()
时,它将失败

阅读此链接,了解有关如何借助
Executions.activate(desktop)
从工作线程访问桌面/执行的更多信息:

是您编写的
Filedownload
类吗?@VGR否,它是一个zk框架类,用于触发浏览器下载文件:@Rodik,我检查了
Filedownload
代码(版本8.0),并在第54行尝试获取当前执行,该执行仅在事件侦听器线程内工作。我也遇到了此问题。您是否在工作线程中调用
Filedownload.save()
?@MalteHartwig抱歉,我正在调用Filedownload.save()在阅读了JSF2的文档之后,我能够编写一个函数来执行我目前的需求,而不需要借助ZK框架。如果它可能对其他人有用,我会把它放在这里。
    @ManagedBean
    public class testBean {

    private final static List<String> fileList=Arrays.asList("x.csv","z.csv","y.csv","t.csv");
    private final static String sourcePath="C:/output/";
    private final static String fileZip="C:/zip/batch.zip";  
    private final static String contentType="application/zip";

 public void download() throws IOException{
    FileDownloadServer.getZipFile(fileList, fileZip, sourcePath);

        File f = new File(fileZip);
        InputStream is = new FileInputStream(f);
         if(is.equals(null)){
             System.out.println("is is null");
         }else{
             System.out.println(" is not null");
         }
         if(contentType.equals(null)){
             System.out.println("contentType is null");
         }else{
             System.out.println("contentType not null");
         }
         if(f.getName()!=null){
             System.out.println("name " + f.getName());
         }else{
             System.out.println("flnm is null");
         }

        //For downloading zip file
        Filedownload.save(is, contentType, f.getName());
}
mai 10, 2017 6:04:33 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: java.lang.NullPointerException
at org.zkoss.zul.Filedownload.save(Filedownload.java:54)
at org.zkoss.zul.Filedownload.save(Filedownload.java:94)
at ma.controle.gestion.bean.batch.BatchExcelBean.uploadFile(BatchExcelBean.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:279)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:319)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:755)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.primefaces.barcelona.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)