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 } }