Java 类java.util.zip.ZipEntry 实例源码

项目:rapidminer    文件:Tools.java   
/**
 * This method checks if the given file is a Zip file containing one entry (in case of file
 * extension .zip). If this is the case, a reader based on a ZipInputStream for this entry is
 * returned. Otherwise, this method checks if the file has the extension .gz. If this applies, a
 * gzipped stream reader is returned. Otherwise, this method just returns a BufferedReader for
 * the given file (file was not zipped at all).
 */
public static BufferedReader getReader(File file, Charset encoding) throws IOException {
    // handle zip files if necessary
    if (file.getAbsolutePath().endsWith(".zip")) {
        try (ZipFile zipFile = new ZipFile(file)) {
            if (zipFile.size() == 0) {
                throw new IOException("Input of Zip file failed: the file archive does not contain any entries.");
            }
            if (zipFile.size() > 1) {
                throw new IOException("Input of Zip file failed: the file archive contains more than one entry.");
            }
            Enumeration<? extends ZipEntry> entries = zipFile.entries();
            InputStream zipIn = zipFile.getInputStream(entries.nextElement());
            return new BufferedReader(new InputStreamReader(zipIn, encoding));
        }
    } else if (file.getAbsolutePath().endsWith(".gz")) {
        return new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(file)), encoding));
    } else {
        return new BufferedReader(new InputStreamReader(new FileInputStream(file), encoding));
    }
}
项目:aem-epic-tool    文件:PackageContents.java   
private void determineTypesInZipFile(ZipFullEntry entry) {
    InputStream in = entry.getInputStream();
    if (in == null) {
            Logger.getLogger(PackageContents.class.getName()).log(Level.SEVERE, "No file contents provided for {0}", entry.getName());
    } else {
        try (ZipInputStream bundle = new ZipInputStream(in)) {
            ZipEntry jarEntry;
            while ((jarEntry = bundle.getNextEntry()) != null) {
                ZipFullEntry jarFullEntry = new ZipFullEntry(bundle, jarEntry, entry.getName().endsWith(".jar"));
                observeFileEntry(jarFullEntry);
                subfiles.put(entry.getName() + "!" + jarFullEntry.getName(), new FileContents(jarFullEntry, this));
            }
        } catch (IOException ex) {
            Logger.getLogger(PackageContents.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
项目:ServerBrowser    文件:FileUtility.java   
/**
 * Unzips a file, placing its contents in the given output location.
 *
 * @param zipFilePath
 *            input zip file
 * @param outputLocation
 *            zip file output folder
 * @throws IOException
 *             if there was an error reading the zip file or writing the unzipped data
 */
public static void unzip(final String zipFilePath, final String outputLocation) throws IOException {
    // Open the zip file
    try (final ZipFile zipFile = new ZipFile(zipFilePath)) {
        final Enumeration<? extends ZipEntry> enu = zipFile.entries();
        while (enu.hasMoreElements()) {

            final ZipEntry zipEntry = enu.nextElement();
            final String name = zipEntry.getName();
            final File outputFile = new File(outputLocation + separator + name);

            if (name.endsWith("/")) {
                outputFile.mkdirs();
                continue;
            }

            final File parent = outputFile.getParentFile();
            if (parent != null) {
                parent.mkdirs();
            }

            // Extract the file
            try (final InputStream inputStream = zipFile.getInputStream(zipEntry);
                    final FileOutputStream outputStream = new FileOutputStream(outputFile)) {
                /*
                 * The buffer is the max amount of bytes kept in RAM during any given time while
                 * unzipping. Since most windows disks are aligned to 4096 or 8192, we use a
                 * multiple of those values for best performance.
                 */
                final byte[] bytes = new byte[8192];
                while (inputStream.available() > 0) {
                    final int length = inputStream.read(bytes);
                    outputStream.write(bytes, 0, length);
                }
            }
        }
    }
}
项目:r2-streamer-java    文件:EpubContainer.java   
@Override
public String rawData(String relativePath) throws NullPointerException {
    //Log.d(TAG, "Reading file at path: " + relativePath);

    try {
        ZipEntry zipEntry = zipFile.getEntry(relativePath);
        InputStream is = zipFile.getInputStream(zipEntry);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line;

        while ((line = br.readLine()) != null) {
            sb.append(line);        //.append('\n');
        }
        //Log.d(TAG, "Reading data: " + sb.toString());

        return sb.toString();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
项目:hadoop    文件:JarFinder.java   
public static void jarDir(File dir, String relativePath, ZipOutputStream zos)
  throws IOException {
  Preconditions.checkNotNull(relativePath, "relativePath");
  Preconditions.checkNotNull(zos, "zos");

  // by JAR spec, if there is a manifest, it must be the first entry in the
  // ZIP.
  File manifestFile = new File(dir, JarFile.MANIFEST_NAME);
  ZipEntry manifestEntry = new ZipEntry(JarFile.MANIFEST_NAME);
  if (!manifestFile.exists()) {
    zos.putNextEntry(manifestEntry);
    new Manifest().write(new BufferedOutputStream(zos));
    zos.closeEntry();
  } else {
    copyToZipStream(manifestFile, manifestEntry, zos);
  }
  zos.closeEntry();
  zipDir(dir, relativePath, zos, true);
  zos.close();
}
项目:Pogamut3    文件:ExampleBotProjectWizardIterator.java   
private static void unZipFile(InputStream source, FileObject projectRoot) throws IOException {
    try {
        ZipInputStream str = new ZipInputStream(source);
        ZipEntry entry;
        while ((entry = str.getNextEntry()) != null) {
            if (entry.isDirectory()) {
                FileUtil.createFolder(projectRoot, entry.getName());
            } else {
                FileObject fo = FileUtil.createData(projectRoot, entry.getName());
                if ("nbproject/project.xml".equals(entry.getName())) {
                    // Special handling for setting name of Ant-based projects; customize as needed:
                    filterProjectXML(fo, str, projectRoot.getName());
                } else {
                    writeFile(str, fo);
                }
            }
        }
    } finally {
        source.close();
    }
}
项目:OperatieBRP    文件:TimestampMojo.java   
private void verwerkManifest(final Path tmpFolder, final FileTime bestandstijd, final JarOutputStream nieuwArchiefStream) throws MojoExecutionException {
    final File archiefBestand = new File(tmpFolder.toFile(), JarFile.MANIFEST_NAME);
    getLog().debug("Processing manifest");
    if (archiefBestand.exists()) {
        try (final FileInputStream fis = new FileInputStream(archiefBestand)) {
            Manifest manifest = new Manifest();
            if (archiefBestand.exists()) {
                manifest.read(fis);
            }
            ZipEntry manifestFolder = new ZipEntry(META_INF_PATH);
            fixeerDatumTijd(manifestFolder, bestandstijd);
            nieuwArchiefStream.putNextEntry(manifestFolder);
            nieuwArchiefStream.closeEntry();
            ZipEntry manifestBestand = new ZipEntry(JarFile.MANIFEST_NAME);
            fixeerDatumTijd(manifestBestand, bestandstijd);
            nieuwArchiefStream.putNextEntry(manifestBestand);
            manifest.write(nieuwArchiefStream);
            nieuwArchiefStream.closeEntry();
            getLog().debug("manifest processed");
        } catch (IOException e) {
            throw new MojoExecutionException("Cannot write manifest file", e);
        }
    }
}
项目:can4eve    文件:RandomAccessLogReader.java   
/**
 * create me based on a (potentially zipped) file
 * 
 * @param file
 * @throws Exception
 */
public RandomAccessLogReader(File logFile) throws Exception {
  if (logFile.getName().endsWith(".zip")) {
    File unzipped = new File(logFile.getParentFile(), "unzipped");
    zipFile = new ZipFile(logFile);
    Enumeration<? extends ZipEntry> entries = zipFile.entries();
    if (entries.hasMoreElements()) {
      ZipEntry entry = entries.nextElement();
      if (!entry.isDirectory()) {
        if (!unzipped.isDirectory()) {
          unzipped.mkdir();
        }
        elmLogFile = new File(unzipped, entry.getName());
        InputStream in = zipFile.getInputStream(entry);
        OutputStream out = new FileOutputStream(elmLogFile);
        IOUtils.copy(in, out);
        IOUtils.closeQuietly(in);
        out.close();
      }
    }
  } else {
    elmLogFile = logFile;
  }
}
项目:tomcat7    文件:JspUtil.java   
public static InputStream getInputStream(String fname, JarFile jarFile,
        JspCompilationContext ctxt, ErrorDispatcher err)
        throws JasperException, IOException {

    InputStream in = null;

    if (jarFile != null) {
        String jarEntryName = fname.substring(1, fname.length());
        ZipEntry jarEntry = jarFile.getEntry(jarEntryName);
        if (jarEntry == null) {
            throw new FileNotFoundException(Localizer.getMessage(
                    "jsp.error.file.not.found", fname));
        }
        in = jarFile.getInputStream(jarEntry);
    } else {
        in = ctxt.getResourceAsStream(fname);
    }

    if (in == null) {
        throw new FileNotFoundException(Localizer.getMessage(
                "jsp.error.file.not.found", fname));
    }

    return in;
}
项目:hadoop    文件:JarFinder.java   
private static void copyToZipStream(File file, ZipEntry entry,
                            ZipOutputStream zos) throws IOException {
  InputStream is = new FileInputStream(file);
  try {
    zos.putNextEntry(entry);
    byte[] arr = new byte[4096];
    int read = is.read(arr);
    while (read > -1) {
      zos.write(arr, 0, read);
      read = is.read(arr);
    }
  } finally {
    try {
      is.close();
    } finally {
      zos.closeEntry();
    }
  }
}
项目:Reer    文件:DefaultModuleRegistry.java   
private Properties loadModuleProperties(String name, File jarFile) {
    try {
        ZipFile zipFile = new ZipFile(jarFile);
        try {
            final String entryName = name + "-classpath.properties";
            ZipEntry entry = zipFile.getEntry(entryName);
            if (entry == null) {
                throw new IllegalStateException("Did not find " + entryName + " in " + jarFile.getAbsolutePath());
            }
            return GUtil.loadProperties(zipFile.getInputStream(entry));
        } finally {
            zipFile.close();
        }
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
}
项目:Tengine    文件:GameLoader.java   
/**
 * Load zip entries from package to HashMap and check if meta-file is present
 * @param path path to package
 * @throws Exception thrown when meta-file is not present in package
 */
private static void loadAndValidate(String path) throws Exception {
    boolean found = false;
    zip = new ZipFile(path);
    Enumeration<? extends ZipEntry> entries = zip.entries();

    while (entries.hasMoreElements()) {
        ZipEntry entry = entries.nextElement();

        if (entry.getName().equals("meta-file") && !entry.isDirectory()) {
            found = true;
        }

        GameLoader.entries.put(entry.getName(), entry);
    }

    if (!found) {
        throw new Exception(String.format("'%s' is not valid game!", path));
    }
}
项目:atlas    文件:Dex.java   
/**
 * Creates a new dex buffer from the dex file {@code file}.
 */
public Dex(File file) throws IOException {
    if (FileUtils.hasArchiveSuffix(file.getName())) {
        ZipFile zipFile = new ZipFile(file);
        ZipEntry entry = zipFile.getEntry(DexFormat.DEX_IN_JAR_NAME);
        if (entry != null) {
            loadFrom(zipFile.getInputStream(entry));
            zipFile.close();
        } else {
            throw new DexException("Expected " + DexFormat.DEX_IN_JAR_NAME + " in " + file);
        }
    } else if (file.getName().endsWith(".dex")) {
        loadFrom(new FileInputStream(file));
    } else {
        throw new DexException("unknown output extension: " + file);
    }
}
项目:tenhou-visualizer    文件:AnalyzeZipTask.java   
@Override
protected Void call() throws Exception {
    Platform.runLater(this.observableList::clear);
    SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
    SAXParser saxParser = saxParserFactory.newSAXParser();
    try (ZipFile zipFile = new ZipFile(this.selectedFile)) {
        int workMax = zipFile.size();
        long workDone = 0;
        for (Enumeration<? extends ZipEntry> e = zipFile.entries(); e.hasMoreElements();) {
            ZipEntry zipEntry = e.nextElement();
            int position = zipEntry.getName().charAt(zipEntry.getName().length() - 7) - '0';
            SyantenAnalyzer analyzer = new SyantenAnalyzer(position);
            ParseHandler parseHandler = new ParseHandler(analyzer);
            try (InputStream is = zipFile.getInputStream(zipEntry);
                GZIPInputStream gzis = new GZIPInputStream(is)) {
                saxParser.parse(gzis, parseHandler);
            }
            ArrayList<MahjongScene> scenes = analyzer.getOriScenes();
            workDone++;
            Platform.runLater(() -> observableList.addAll(scenes));
            updateMessage(workDone + "/" + workMax);
            updateProgress(workDone, workMax);
        }
    }
    return null;
}
项目:gemini.blueprint    文件:JarUtils.java   
/**
 * 
 * Writes a resource content to a jar.
 * 
 * @param res
 * @param entryName
 * @param jarStream
 * @param bufferSize
 * @return the number of bytes written to the jar file
 * @throws Exception
 */
public static int writeToJar(Resource res, String entryName, JarOutputStream jarStream, int bufferSize)
        throws IOException {
    byte[] readWriteJarBuffer = new byte[bufferSize];

    // remove leading / if present.
    if (entryName.charAt(0) == '/')
        entryName = entryName.substring(1);

    jarStream.putNextEntry(new ZipEntry(entryName));
    InputStream entryStream = res.getInputStream();

    int numberOfBytes;

    // read data into the buffer which is later on written to the jar.
    while ((numberOfBytes = entryStream.read(readWriteJarBuffer)) != -1) {
        jarStream.write(readWriteJarBuffer, 0, numberOfBytes);
    }
    return numberOfBytes;
}
项目:multidexlib2    文件:ZipFileDexContainer.java   
public ZipFileDexContainer(File zip, DexFileNamer namer, Opcodes opcodes) throws IOException {
    Map<String, WrappingMultiDexFile<DexBackedDexFile>> entryMap = new TreeMap<>(new DexFileNameComparator(namer));
    try (ZipFile zipFile = new ZipFile(zip)) {
        Enumeration<? extends ZipEntry> zipEntries = zipFile.entries();
        while (zipEntries.hasMoreElements()) {
            ZipEntry zipEntry = zipEntries.nextElement();
            String entryName = zipEntry.getName();
            if (namer.isValidName(entryName)) {
                DexBackedDexFile dexFile;
                try (InputStream inputStream = zipFile.getInputStream(zipEntry)) {
                    dexFile = RawDexIO.readRawDexFile(inputStream, zipEntry.getSize(), opcodes);
                }
                WrappingMultiDexFile<DexBackedDexFile> multiDexFile =
                        new BasicMultiDexFile<>(this, entryName, dexFile);
                if (entryMap.put(entryName, multiDexFile) != null) throwDuplicateEntryName(entryName);
            }
        }
    }
    initialize(entryMap, opcodes);
}
项目:n4js    文件:ZipFileExporter.java   
/**
 * Create a new entry in the zip file with the given content.
 */
public void writeFile(InputStream contentStream, long timeStamp, String destinationPath) throws IOException {
    ZipEntry newEntry = new ZipEntry(destinationPath);
    byte[] readBuffer = new byte[4096];

    newEntry.setTime(timeStamp);

    outputStream.putNextEntry(newEntry);
    try {
        int n;
        while ((n = contentStream.read(readBuffer)) > 0) {
            outputStream.write(readBuffer, 0, n);
        }
    } finally {
        if (contentStream != null) {
            contentStream.close();
        }
    }
    outputStream.closeEntry();
}
项目:rskj    文件:VMUtilsTest.java   
@Test
public void saveZippedProgramTraceFile() throws Exception {
    Path traceFilePath = tempRule.newFolder().toPath();
    ProgramTrace mockTrace = new ProgramTrace(ConfigHelper.CONFIG);
    String mockTxHash = "1234";

    VMUtils.saveProgramTraceFile(
            traceFilePath,
            mockTxHash,
            true,
            mockTrace
    );

    ZipInputStream zipIn = new ZipInputStream(Files.newInputStream(traceFilePath.resolve(mockTxHash + ".zip")));
    ZipEntry zippedTrace = zipIn.getNextEntry();
    Assert.assertThat(zippedTrace.getName(), is(mockTxHash + ".json"));
    ByteArrayOutputStream unzippedTrace = new ByteArrayOutputStream();
    byte[] traceBuffer = new byte[2048];
    int len;
    while ((len = zipIn.read(traceBuffer)) > 0) {
        unzippedTrace.write(traceBuffer, 0, len);
    }
    Assert.assertThat(new String(unzippedTrace.toByteArray()), is(Serializers.serializeFieldsOnly(mockTrace, true)));
}
项目:OpenJSharp    文件:Utils.java   
static void copyJarFile(JarInputStream in, JarOutputStream out) throws IOException {
    if (in.getManifest() != null) {
        ZipEntry me = new ZipEntry(JarFile.MANIFEST_NAME);
        out.putNextEntry(me);
        in.getManifest().write(out);
        out.closeEntry();
    }
    byte[] buffer = new byte[1 << 14];
    for (JarEntry je; (je = in.getNextJarEntry()) != null; ) {
        out.putNextEntry(je);
        for (int nr; 0 < (nr = in.read(buffer)); ) {
            out.write(buffer, 0, nr);
        }
    }
    in.close();
    markJarFile(out);  // add PACK200 comment
}
项目:incubator-netbeans    文件:JarURLStreamHandlerTest.java   
@Override
protected void setUp() throws Exception {
    super.setUp();
    clearWorkDir();

    jar = new File(getWorkDir(), "x.jar");
    JarOutputStream os = new JarOutputStream(
        new FileOutputStream(jar)
    );
    os.putNextEntry(new ZipEntry("fldr/plain.txt"));
    os.write("Ahoj\n".getBytes());
    os.closeEntry();
    os.close();
    JarClassLoader registerJarSource = new JarClassLoader(
        Collections.nCopies(1, jar),
        new ClassLoader[] { getClass().getClassLoader() }
    );
    assertNotNull("Registered", registerJarSource);
}
项目:Tower-Defense-Galaxy    文件:Tools.java   
public static FileHandle getRealFileHandle(String zipEntryPath, ZipFile zipFile) {
    if (Gdx.files.local(zipEntryPath).exists()) {
        return Gdx.files.local(zipEntryPath);
    } else {
        Gdx.app.log("OBB", "Unzipping file '" + zipEntryPath + "'...");
        try {
            FileHandle unzippedFile;
            ZipEntry entry = zipFile.getEntry(zipEntryPath);
            if (entry != null) {
                unzippedFile = Gdx.files.local(zipEntryPath);
                InputStream is = zipFile.getInputStream(entry);
                byte[] buffer = new byte[65536];
                int readLength;
                while ((readLength = is.read(buffer)) >= 0) {
                    unzippedFile.writeBytes(buffer, 0, readLength, true);
                }
                return unzippedFile;
            } else {
                Gdx.app.error("OBB", "Entry '" + zipEntryPath + "' not found inside zip file.");
            }
        } catch (IOException ioe) {
            Gdx.app.error("OBB", "A problem occurred while writing to the local file.");
        }
    }
    return null;
}
项目:jdk8u-jdk    文件:B7050028.java   
public static void main(String[] args) throws Exception {
    URLConnection conn = B7050028.class.getResource("B7050028.class").openConnection();
    int len = conn.getContentLength();
    byte[] data = new byte[len];
    InputStream is = conn.getInputStream();
    is.read(data);
    is.close();
    conn.setDefaultUseCaches(false);
    File jar = File.createTempFile("B7050028", ".jar");
    jar.deleteOnExit();
    OutputStream os = new FileOutputStream(jar);
    ZipOutputStream zos = new ZipOutputStream(os);
    ZipEntry ze = new ZipEntry("B7050028.class");
    ze.setMethod(ZipEntry.STORED);
    ze.setSize(len);
    CRC32 crc = new CRC32();
    crc.update(data);
    ze.setCrc(crc.getValue());
    zos.putNextEntry(ze);
    zos.write(data, 0, len);
    zos.closeEntry();
    zos.finish();
    zos.close();
    os.close();
    System.out.println(new URLClassLoader(new URL[] {new URL("jar:" + jar.toURI() + "!/")}, ClassLoader.getSystemClassLoader().getParent()).loadClass(B7050028.class.getName()));
}
项目:alfresco-remote-api    文件:SiteExportServiceTest.java   
private List<String> getAcpEntries(InputStream inputStream) throws Exception
{
    List<String> entries = Lists.newArrayList();
    ZipInputStream zipInputStream = new ZipInputStream(inputStream);
    ZipEntry entry = null;
    try
    {
        while ((entry = zipInputStream.getNextEntry()) != null)
        {
            entries.add(entry.getName());
        }
    }
    catch (ZipException e)
    {
        // ignore
    }
    return entries;
}
项目:incubator-netbeans    文件:SourceForBinaryQueryTest.java   
@Override
protected void setUp() throws Exception {
    this.clearWorkDir();
    super.setUp();
    File wd = this.getWorkDir();
    FileObject wdfo = FileUtil.toFileObject(wd);
    br1 = wdfo.createFolder("bin1");
    br2 = wdfo.createFolder("bin2");
    sr1 = wdfo.createFolder("src1");
    File zf = new File (wd,"src2.zip");
    ZipOutputStream zos = new ZipOutputStream (new FileOutputStream (zf));
    zos.putNextEntry(new ZipEntry("foo.java"));
    zos.closeEntry();
    zos.close();
    sr2 = FileUtil.getArchiveRoot(FileUtil.toFileObject(zf));
    map.put(br1.toURL(), Collections.singletonList(sr1));
    map.put(br2.toURL(), Collections.singletonList(sr2));
}
项目:lams    文件:ArchiveResourceListSource.java   
/**
 * Returns a list of file resources contained in the specified directory
 * within a given Zip'd archive file.
 * 
 * @param  file the zip file containing the resources to return
 * @param  root the directory within the zip file containing the resources
 * @return a list of file resources contained in the specified directory
 *         within a given Zip'd archive file
 */
private List getResources(ZipFile file, String root)
{
    List resourceNames = new ArrayList();
    Enumeration e = file.entries();
    while (e.hasMoreElements())
    {
        ZipEntry entry = (ZipEntry) e.nextElement();
        String name = entry.getName();
        if (name.startsWith(root)
            && !(name.indexOf('/') > root.length())
            && !entry.isDirectory())
        {
            // Calling File.getPath() cleans up the path so that it's using
            // the proper path separators for the host OS
            name = new File(name).getPath();
            resourceNames.add(name);
        }
    }
    return resourceNames;
}
项目:letv    文件:FabricKitsFinder.java   
private KitInfo loadKitInfo(ZipEntry fabricFile, ZipFile apk) {
    KitInfo kitInfo;
    InputStream inputStream = null;
    try {
        inputStream = apk.getInputStream(fabricFile);
        Properties properties = new Properties();
        properties.load(inputStream);
        String id = properties.getProperty(FABRIC_IDENTIFIER_KEY);
        String version = properties.getProperty(FABRIC_VERSION_KEY);
        String buildType = properties.getProperty(FABRIC_BUILD_TYPE_KEY);
        if (TextUtils.isEmpty(id) || TextUtils.isEmpty(version)) {
            throw new IllegalStateException("Invalid format of fabric file," + fabricFile.getName());
        }
        kitInfo = new KitInfo(id, version, buildType);
        return kitInfo;
    } catch (IOException ie) {
        kitInfo = Fabric.getLogger();
        kitInfo.e(Fabric.TAG, "Error when parsing fabric properties " + fabricFile.getName(), ie);
        return null;
    } finally {
        CommonUtils.closeQuietly(inputStream);
    }
}
项目:jdk8u-jdk    文件:TestExtraTime.java   
static void check(FileTime mtime, FileTime atime, FileTime ctime,
                  ZipEntry ze, byte[] extra) {
    /*
    System.out.printf("    mtime [%tc]: [%tc]/[%tc]%n",
                      mtime.to(TimeUnit.MILLISECONDS),
                      ze.getTime(),
                      ze.getLastModifiedTime().to(TimeUnit.MILLISECONDS));
     */
    if (mtime.to(TimeUnit.SECONDS) !=
        ze.getLastModifiedTime().to(TimeUnit.SECONDS))
        throw new RuntimeException("Timestamp: storing mtime failed!");
    if (atime != null &&
        atime.to(TimeUnit.SECONDS) !=
        ze.getLastAccessTime().to(TimeUnit.SECONDS))
        throw new RuntimeException("Timestamp: storing atime failed!");
    if (ctime != null &&
        ctime.to(TimeUnit.SECONDS) !=
        ze.getCreationTime().to(TimeUnit.SECONDS))
        throw new RuntimeException("Timestamp: storing ctime failed!");
    if (extra != null) {
        // if extra data exists, the current implementation put it at
        // the end of the extra data array (implementation detail)
        byte[] extra1 = ze.getExtra();
        if (extra1 == null || extra1.length < extra.length ||
            !Arrays.equals(Arrays.copyOfRange(extra1,
                                              extra1.length - extra.length,
                                              extra1.length),
                           extra)) {
            throw new RuntimeException("Timestamp: storing extra field failed!");
        }
    }
}
项目:FSTestTools    文件:ZipImportCommandsTest.java   
private void fillZipWithContent() throws IOException {
    RandomAccessFile raf = new RandomAccessFile(txtFile,"rw");
    raf.writeUTF("Test");
    raf.close();
    try (FileOutputStream fos = new FileOutputStream(zipFile)) {
        try (ZipOutputStream zos = new ZipOutputStream(fos)) {
            try (FileInputStream fis = new FileInputStream(txtFile)) {
                ZipEntry zipEntry = new ZipEntry("test.txt");
                zos.putNextEntry(zipEntry);
                byte[] bytes = new byte[1024];
                int length;
                while ((length = fis.read(bytes)) >= 0) {
                    zos.write(bytes, 0, length);
                }
                zos.flush();
                zos.closeEntry();
                fos.flush();
            }
        }
    }
    zipFile.deleteOnExit();
    txtFile.deleteOnExit();
}
项目:atlas    文件:ZipUtils.java   
public static boolean removeZipEntry(File file, Pattern pattern, File targetFile)
    throws FileNotFoundException, IOException {
    byte[] buffer = new byte[1024];
    java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(file);
    ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(targetFile)));
    BufferedOutputStream bo = new BufferedOutputStream(out);
    InputStream inputStream;
    Enumeration enumeration = zipFile.entries();
    while (enumeration.hasMoreElements()) {
        ZipEntry zipEntry = (ZipEntry)enumeration.nextElement();
        String name = zipEntry.getName();
        if (pattern.matcher(name).find()) {
            continue;
        }
        out.putNextEntry(zipEntry);
        inputStream = zipFile.getInputStream(zipEntry);
        write(inputStream, out, buffer);
        bo.flush();

    }

    closeQuitely(zipFile);
    closeQuitely(out);
    closeQuitely(bo);

    return true;
}
项目:HeadlineNews    文件:ZipUtils.java   
/**
 * 获取压缩文件中的文件路径链表
 *
 * @param zipFile 压缩文件
 * @return 压缩文件中的文件路径链表
 * @throws IOException IO错误时抛出
 */
public static List<String> getFilesPath(final File zipFile)
        throws IOException {
    if (zipFile == null) return null;
    List<String> paths = new ArrayList<>();
    Enumeration<?> entries = getEntries(zipFile);
    while (entries.hasMoreElements()) {
        paths.add(((ZipEntry) entries.nextElement()).getName());
    }
    return paths;
}
项目:java-nio-test    文件:ByteBufferEncoder.java   
public static Request decodeRequest(byte[] pack) {
    byte[] zippedBytes = Base64.getDecoder().decode(pack);

    ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zippedBytes));
    ZipEntry zipEntry;
    Request request = new Request(null);

    try {
        while ((zipEntry = zipInputStream.getNextEntry()) != null) {
            byte[] entryContent = readFromInputStream(zipInputStream);
            String entryName = zipEntry.getName();

            switch (entryName) {
                case "sequence":
                    request.setSequence(Bytes.bytesToLong(entryContent));
                    break;
                case "path":
                    request.setPath(new String(entryContent));
                    break;
                case "params":
                    request.setParams(parseJsonObject(entryContent));
                    break;
            }
        }

        return request;
    } catch (IOException e) {
        LOG.error("Error reading zip stream", e);
        return null;
    }
}
项目:shrinker    文件:JarProcessor.java   
private List<Pair<String, byte[]>> readZipEntries(Path src) throws IOException {
    ImmutableList.Builder<Pair<String, byte[]>> list = ImmutableList.builder();
    try (ZipInputStream zip = new ZipInputStream(new ByteArrayInputStream(Files.readAllBytes(src)))) {
        for (ZipEntry entry = zip.getNextEntry();
             entry != null;
             entry = zip.getNextEntry()) {
            String name = entry.getName();
            if (!name.endsWith(".class")) {
                // skip
                continue;
            }
            long entrySize = entry.getSize();
            if (entrySize >= Integer.MAX_VALUE) {
                throw new OutOfMemoryError("Too large class file " + name + ", size is " + entrySize);
            }
            byte[] bytes = readByteArray(zip, (int) entrySize);
            list.add(Pair.of(name, bytes));
        }
    }
    return list.build();
}
项目:hadoop    文件:TestApplicationClassLoader.java   
private File makeTestJar() throws IOException {
  File jarFile = new File(testDir, "test.jar");
  JarOutputStream out = new JarOutputStream(new FileOutputStream(jarFile));
  ZipEntry entry = new ZipEntry("resource.txt");
  out.putNextEntry(entry);
  out.write("hello".getBytes());
  out.closeEntry();
  out.close();
  return jarFile;
}
项目:elasticsearch_my    文件:InstallPluginCommandTests.java   
public void testZipRelativeOutsideEntryName() throws Exception {
    Tuple<Path, Environment> env = createEnv(fs, temp);
    Path zip = createTempDir().resolve("broken.zip");
    try (ZipOutputStream stream = new ZipOutputStream(Files.newOutputStream(zip))) {
        stream.putNextEntry(new ZipEntry("elasticsearch/../blah"));
    }
    String pluginZip = zip.toUri().toURL().toString();
    IOException e = expectThrows(IOException.class, () -> installPlugin(pluginZip, env.v1()));
    assertTrue(e.getMessage(), e.getMessage().contains("resolving outside of plugin directory"));
}
项目:amap    文件:MIP_FileUtils.java   
public static void ZipFiles(List<String> filepaths, String zipFileString)
    throws Exception
{
    File zipFile = new File(zipFileString);
    if (zipFile != null && zipFile.exists())
    {
        zipFile.delete();
    }
    if (filepaths != null)
    {
        ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));
        for (String filepath : filepaths)
        {
            File file = new File(filepath);
            if (file != null && file.exists())
            {
                ZipEntry zipEntry = new ZipEntry(file.getName());
                FileInputStream inputStream = new FileInputStream(file);
                outZip.putNextEntry(zipEntry);
                int len;
                byte[] buffer = new byte[4096];
                while ((len = inputStream.read(buffer)) != -1)
                {
                    outZip.write(buffer, 0, len);
                }
                outZip.closeEntry();
            }
        }
        outZip.finish();
        outZip.close();
    }
}
项目:BaseCore    文件:CrashHander.java   
/**
 * INTERNAL method that returns the build date of the current APK as a string, or null if unable to determine it.
 *
 * @param context    A valid context. Must not be null.
 * @param dateFormat DateFormat to use to convert from Date to String
 * @return The formatted date, or "Unknown" if unable to determine it.
 */
private static String getBuildDateAsString(Context context, DateFormat dateFormat) {
    String buildDate;
    try {
        ApplicationInfo ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), 0);
        ZipFile zf = new ZipFile(ai.sourceDir);
        ZipEntry ze = zf.getEntry("classes.dex");
        long time = ze.getTime();
        buildDate = dateFormat.format(new Date(time));
        zf.close();
    } catch (Exception e) {
        buildDate = "Unknown";
    }
    return buildDate;
}
项目:FreeStreams-TVLauncher    文件:ZipUtil.java   
/**
 * 获得压缩文件内文件列表
 *
 * @param zipFile 压缩文件
 * @return 压缩文件内文件名称
 * @throws ZipException 压缩文件格式有误时抛出
 * @throws IOException 当解压缩过程出错时抛出
 */
public static ArrayList<String> getEntriesNames(File zipFile) throws ZipException, IOException {
    ArrayList<String> entryNames = new ArrayList<String>();
    Enumeration<?> entries = getEntriesEnumeration(zipFile);
    while (entries.hasMoreElements()) {
        ZipEntry entry = ((ZipEntry)entries.nextElement());
        entryNames.add(new String(getEntryName(entry).getBytes("GB2312"), "8859_1"));
    }
    return entryNames;
}
项目:hepek-classycle    文件:Parser.java   
private static void analyseClassFiles(ZipFile zipFile, String source, ArrayList<UnresolvedNode> unresolvedNodes,
        StringPattern reflectionPattern) throws IOException {
    final Enumeration<? extends ZipEntry> entries = zipFile.entries();
    while (entries.hasMoreElements()) {
        final ZipEntry entry = entries.nextElement();
        if (!entry.isDirectory() && entry.getName().endsWith(".class")) {
            final InputStream stream = zipFile.getInputStream(entry);
            final int size = (int) entry.getSize();
            unresolvedNodes.add(Parser.createNode(stream, source, size, reflectionPattern));
        }
    }
}
项目:atlas    文件:TPatchTool.java   
/**
 * add files to jar
 *
 * @param jos
 * @param file
 */
private void addFile(JarOutputStream jos, File file) throws IOException {
    byte[] buf = new byte[8064];
    String path = file.getName();
    InputStream in = null;
    try {
        in = new FileInputStream(file);
        ZipEntry fileEntry = new ZipEntry(path);
        jos.putNextEntry(fileEntry);
        // Transfer bytes from the file to the ZIP file
        int len;
        while ((len = in.read(buf)) > 0) {
            jos.write(buf, 0, len);
        }
        // Complete the entry
        jos.closeEntry();
    } finally {
        IOUtils.closeQuietly(in);
    }
}
项目:elasticsearch_my    文件:InstallPluginCommandTests.java   
static String writeZip(Path structure, String prefix) throws IOException {
    Path zip = createTempDir().resolve(structure.getFileName() + ".zip");
    try (ZipOutputStream stream = new ZipOutputStream(Files.newOutputStream(zip))) {
        Files.walkFileTree(structure, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                String target = (prefix == null ? "" : prefix + "/") + structure.relativize(file).toString();
                stream.putNextEntry(new ZipEntry(target));
                Files.copy(file, stream);
                return FileVisitResult.CONTINUE;
            }
        });
    }
    return zip.toUri().toURL().toString();
}