@Override public FilePathZip getPath(String path) { FilePathZip p = new FilePathZip(); p.name = path; return p; }
@Override public long size() { try { ZipFile file = openZipFile(); try { ZipEntry entry = file.getEntry(getEntryName()); return entry == null ? 0 : entry.getSize(); } finally { file.close(); } } catch (IOException e) { return 0; } }
@Override public FilePath getParent() { int idx = name.lastIndexOf('/'); return idx < 0 ? null : getPath(name.substring(0, idx)); }
path += "/"; ZipFile file = openZipFile(); try { String dirName = getEntryName(); String prefix = path.substring(0, path.length() - dirName.length()); Enumeration<? extends ZipEntry> en = file.entries(); list.add(getPath(prefix + name));
private ZipFile openZipFile() throws IOException { String fileName = translateFileName(name); return new ZipFile(fileName); }
@Override public FilePath unwrap() { return FilePath.get(name.substring(getScheme().length() + 1)); }
@Override public InputStream newInputStream() throws IOException { return new FileChannelInputStream(open("r"), true); }
@Override public boolean isAbsolute() { String fileName = translateFileName(name); return FilePath.get(fileName).isAbsolute(); }
@Override public boolean exists() { try { String entryName = getEntryName(); if (entryName.length() == 0) { return true; } ZipFile file = openZipFile(); try { return file.getEntry(entryName) != null; } finally { file.close(); } } catch (IOException e) { return false; } }
@Override public FileChannel open(String mode) throws IOException { ZipFile file = openZipFile(); ZipEntry entry = file.getEntry(getEntryName()); if (entry == null) { file.close(); throw new FileNotFoundException(name); } return new FileZip(file, entry); }
@Override public boolean isDirectory() { try { String entryName = getEntryName(); if (entryName.length() == 0) { return true; ZipFile file = openZipFile(); try { Enumeration<? extends ZipEntry> en = file.entries();