private void extractFile(ZipFile zipFile, ZipEntry src, String destDir) {

        String filename = src.getName();
        /*check existence of subdirectory*/
        String[] paths = filename.split("/");
        String curP = "";
        for (int i = 0; i < paths.length; i++) {
            if (paths[i] != null && !paths[i].equals("") && i < paths.length - 1) {
                /*check existience of directory, if not, create it*/
                curP += paths[i] + dir_escape;
                if (!(new File(destDir + File.separator + curP)).exists()) {
                    (new File(destDir + File.separator + curP)).mkdir();
                }

            }
        }
        /*real single file name*/
        //filename = paths[paths.length - 1];
        try {
            /*now extract the real single files*/
            copyInputStream(zipFile.getInputStream(src),
                    new BufferedOutputStream(new FileOutputStream(destDir + File.separator + filename)));
            /*make the file executable*/
            if (!System.getProperty("os.name").startsWith("Windows")) {
                runCommand("chmod +x " + destDir + File.separator + filename);
            }

        } catch (IOException ex) {
            Logger.getLogger(JarUpdate.class.getName()).log(Level.SEVERE, null, ex);
        }
    }