示例#1
0
  private void initIndexContent(DataInputStream in) throws IOException {
    try {
      while (true) {
        char flag = (char) in.readByte();
        String key = in.readUTF();
        if (flag == DELETE) {
          lruEntries.remove(key);
          return;
        }
        DiskLruCacheEntry entry = lruEntries.get(key);
        if (entry == null) {
          entry = new DiskLruCacheEntry(this, key);
          lruEntries.put(key, entry);
        }
        switch (flag) {
          case CLEAN:
            entry.size = in.readInt();
            break;

          case UPDATE:
          case WRITE:
            entry.clean(); // reset to clean or deleted
            break;
          case READ:
            // this work was already done by calling lruEntries.get()
            break;
          default:
            throw new IOException("unexpected index line: " + flag + ":" + key);
        }
      }
    } catch (EOFException e) {
      // end
    }
  }