1package com.bumptech.glide.load.engine.cache; 2 3import com.bumptech.glide.load.Key; 4 5import java.io.File; 6 7/** 8 * An interface for writing to and reading from a disk cache. 9 */ 10public interface DiskCache { 11 /** 12 * An interface to actually write data to a key in the disk cache. 13 */ 14 interface Writer { 15 /** 16 * Writes data to the file and returns true if the write was successful and should be committed, and 17 * false if the write should be aborted. 18 * 19 * @param file The File the Writer should write to. 20 */ 21 boolean write(File file); 22 } 23 24 /** 25 * Get the cache for the value at the given key. 26 * 27 * <p> 28 * Note - This is potentially dangerous, someone may write a new value to the file at any point in timeand we 29 * won't know about it. 30 * </p> 31 * 32 * @param key The key in the cache. 33 * @return An InputStream representing the data at key at the time get is called. 34 */ 35 File get(Key key); 36 37 /** 38 * Write to a key in the cache. {@link Writer} is used so that the cache implementation can perform actions after 39 * the write finishes, like commit (via atomic file rename). 40 * 41 * @param key The key to write to. 42 * @param writer An interface that will write data given an OutputStream for the key. 43 */ 44 void put(Key key, Writer writer); 45 46 /** 47 * Remove the key and value from the cache. 48 * 49 * @param key The key to remove. 50 */ 51 void delete(Key key); 52} 53