/* (non-Javadoc) * @see org.xidea.android.impl.io.DiskLruCacheIF#remove(java.lang.String) */ @Override public synchronized boolean remove(String key) throws IOException { validate(key); final DiskLruCacheEntry entry = lruEntries.get(key); if (entry == null) { return false; } int s = entry.size; entry.delete(); size -= s; lruEntries.remove(key); redundantOpCount++; writeIndex(DELETE, entry); if (indexRebuildRequired()) { executorService.submit(cleanupCallable); } return true; }
private void initIndex(DataInputStream in) throws IOException { try { final String magic = in.readUTF(); final char blank = (char) in.readByte(); if (!MAGIC.equals(magic) || '\n' != blank) { throw new IOException("unexpected index header: [" + magic + ", " + blank + "]"); } initIndexContent(in); for (final Iterator<DiskLruCacheEntry> i = lruEntries.values().iterator(); i.hasNext(); ) { final DiskLruCacheEntry entry = i.next(); if (entry.isReadable()) { size += entry.size; } else { entry.delete(); i.remove(); } } } finally { IOUtil.closeQuietly(in); } }