public AsciiBytes substring(int beginIndex, int endIndex) { int length = endIndex - beginIndex; if (this.offset + length > this.bytes.length) { throw new IndexOutOfBoundsException(); } return new AsciiBytes(this.bytes, this.offset + beginIndex, length); }
... import org.springframework.boot.loader.jar.JarEntryData; import org.springframework.boot.loader.jar.JarEntryFilter; import org.springframework.boot.loader.jar.JarFile; import org.springframework.boot.loader.tools.JarWriter; import org.springframework.boot.loader.util.AsciiBytes; ... JarWriter writer = new JarWriter(destination); try { JarFile filteredJarFile = sourceJar.getFilteredJarFile(new JarEntryFilter() { @Override public AsciiBytes apply(AsciiBytes name, JarEntryData entryData) { String string = name.toString(); String exp = "^a.*"; if (string.matches(exp)) { string = string.replaceFirst(exp, "replaced"); return new AsciiBytes(string); } return name; } }); writer.writeEntries(filteredJarFile); } finally { try { writer.close(); } catch (Exception ex) { ex.printStackTrace(); } }
dataOffset = 0; this.name = new AsciiBytes(data, dataOffset, (int) nameLength); if (filter != null) { this.name = filter.apply(this.name); this.comment = new AsciiBytes(data, (int) (dataOffset + nameLength + extraLength), (int) commentLength);
private <T extends FileHeader> T getEntry(CharSequence name, Class<T> type, boolean cacheEntry) { T entry = doGetEntry(name, type, cacheEntry, null); if (!isMetaInfEntry(name) && isMultiReleaseJar()) { int version = RUNTIME_VERSION; AsciiBytes nameAlias = (entry instanceof JarEntry) ? ((JarEntry) entry).getAsciiBytesName() : new AsciiBytes(name.toString()); while (version > BASE_VERSION) { T versionedEntry = doGetEntry("META-INF/versions/" + version + "/" + name, type, cacheEntry, nameAlias); if (versionedEntry != null) { return versionedEntry; } version--; } } return entry; }