35 lines
934 B
Java
35 lines
934 B
Java
package dev.plex.cache;
|
|
|
|
import com.google.common.collect.EvictingQueue;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.Queue;
|
|
|
|
public class FileCache
|
|
{
|
|
private final Queue<CacheItem> cache = EvictingQueue.create(15);
|
|
|
|
public byte[] getFile(File file) throws IOException
|
|
{
|
|
return getFile(file.getPath());
|
|
}
|
|
|
|
public byte[] getFile(String path) throws IOException
|
|
{
|
|
CacheItem theItem = cache.stream().filter(cacheItem -> cacheItem.path.equals(path)).findFirst().orElse(null);
|
|
if (theItem == null)
|
|
{
|
|
theItem = new CacheItem(new File(path));
|
|
cache.add(theItem);
|
|
}
|
|
if (System.currentTimeMillis() - theItem.timestamp > 3 * 60 * 1000) // 3 minutes
|
|
{
|
|
cache.remove(theItem);
|
|
theItem = new CacheItem(new File(path));
|
|
cache.add(theItem);
|
|
}
|
|
return theItem.file;
|
|
}
|
|
}
|