public static InputStream getInputStream(String key) { // System.out.println("returning " + key + " from file cache (cache size: " + cache.size() + // ")"); byte[] bytes = cache.get(key); if (bytes == null) return null; return new ByteArrayInputStream(bytes); }
public static void addToCache(String key, File fileToCache) { // System.out.println("storing " + key + " on file cache (cache size: " + cache.size() + ")"); try { InputStream is = new FileInputStream(fileToCache); // Get the size of the file long length = fileToCache.length(); // You cannot create an array using a long type. // It needs to be an int type. // Before converting to an int type, check // to ensure that file is not larger than Integer.MAX_VALUE. if (length > Integer.MAX_VALUE) { // File is too large } // Create the byte array to hold the data byte[] bytes = new byte[(int) length]; // Read in the bytes int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) { offset += numRead; } // Ensure all the bytes have been read in if (offset < bytes.length) { is.close(); throw new IOException("Could not completely read file " + fileToCache.getName()); } // Close the input stream and return bytes is.close(); cache.put(key, bytes); } catch (Exception e) { System.err.println("error adding to cache! " + e.getMessage()); e.printStackTrace(); } }
public void clear() { cache.clear(); }
public int size() { if (cache != null) return cache.size(); else return -1; }