Example #1
0
  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);
  }
Example #2
0
  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();
    }
  }
Example #3
0
 public void clear() {
   cache.clear();
 }
Example #4
0
 public int size() {
   if (cache != null) return cache.size();
   else return -1;
 }