示例#1
0
  /* (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;
  }
示例#2
0
  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);
    }
  }