Android Open Source - android-sdk Disk Lru Cache






From Project

Back to project page android-sdk.

License

The source code is released under:

Copyright (c) 2013 Adcash OU. All rights reserved under Creative Commons Attribution 3.0 Unported http://creativecommons.org/licenses/by/3.0/ Redistribution and use in source and binary forms, with or...

If you think the Android project android-sdk listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.adcash.mobileads;
//from  ww  w  . j  av a 2 s  . c o m
import android.content.Context;
import android.net.Uri;
import android.support.v4.util.LruCache;
import android.util.Log;
import com.adcash.mobileads.util.Files;
import com.adcash.mobileads.util.Streams;

import java.io.*;

/*
 * Please use putStream, getUri, and removeStream (instead of put, get, and remove).
 * The original methods do not perform necessary hashing of fileNames
 */
public class DiskLruCache extends LruCache<String, File> {
    private final Context mContext;
    private final String mCacheDirectoryName;
    private final File mCacheDirectory;

    public DiskLruCache(Context context, String cacheDirectoryName, int maxSizeBytes) throws IllegalArgumentException, IOException {
        super(maxSizeBytes);

        if (context == null) {
            throw new IllegalArgumentException("context may not be null.");
        } else if (cacheDirectoryName == null) {
            throw new IllegalArgumentException("cacheDirectoryName may not be null.");
        } else if (maxSizeBytes < 0) {
            throw new IllegalArgumentException("maxSizeBytes must be positive.");
        }

        mContext = context;
        mCacheDirectoryName = cacheDirectoryName;
        mCacheDirectory = Files.createDirectory(context.getFilesDir() + File.separator + mCacheDirectoryName);

        if (mCacheDirectory == null) {
            throw new IOException("Unable to obtain access to directory " + mCacheDirectoryName);
        }

        loadFilesFromDisk();
    }

    File getCacheDirectory() {
        return mCacheDirectory;
    }

    Uri getUri(final String key) {
        File value = get(Utils.sha1(key));

        if (value == null) {
            return null;
        }

        return Uri.parse(value.getAbsolutePath());
    }

    synchronized boolean putStream(final String fileName, final InputStream content) {
        if (fileName == null || content == null) {
            return false;
        }

        String hashedFileName = Utils.sha1(fileName);

        if (getUri(hashedFileName) != null) {
            return false;
        }

        File file = createFile(hashedFileName, content);

        if (file == null || !file.exists()) {
            return false;
        }

        put(hashedFileName, file);
        return true;
    }

    synchronized File removeStream(final String fileName) {
        if (fileName == null) {
            return null;
        }

        return remove(Utils.sha1(fileName));
    }

    private File createFile(String fileName, InputStream content) {
        File file = new File(mContext.getFilesDir() + File.separator + mCacheDirectoryName + File.separator + fileName);

        FileOutputStream fileOutputStream;
        try {
            fileOutputStream = new FileOutputStream(file);
        } catch (FileNotFoundException e) {
            return null;
        }

        try {
            Streams.copyContent(content, fileOutputStream);
        } catch (IOException e) {
            file.delete();
            return null;
        } finally {
            Streams.closeStream(fileOutputStream);
        }

        return file;
    }

    private void loadFilesFromDisk() {
        File[] allFiles = mCacheDirectory.listFiles();

        if (allFiles != null) {
            for (final File file : allFiles) {
                put(file.getName(), file);
            }
        }
    }

    /*
     * From android.support.v4.util.LruCache
     */

    @Override
    protected void entryRemoved(final boolean evicted, final String key, final File oldValue, final File newValue) {
        super.entryRemoved(evicted, key, oldValue, newValue);

        if (oldValue != null) {
            if (!oldValue.delete()) {
                Log.d("Adcash", "Unable to delete file from cache: " + oldValue.getName());
            }
        }
    }

    @Override
    protected int sizeOf(String key, File value) {
        if (value != null && value.exists() && value.length() > 0) {
            return Files.intLength(value);
        }

        return super.sizeOf(key, value);
    }
}




Java Source Code List

com.adcash.mobileads.AdAlertGestureListener.java
com.adcash.mobileads.AdAlertReporter.java
com.adcash.mobileads.AdConfiguration.java
com.adcash.mobileads.AdFetchTask.java
com.adcash.mobileads.AdFetcher.java
com.adcash.mobileads.AdLoadTask.java
com.adcash.mobileads.AdTypeTranslator.java
com.adcash.mobileads.AdUrlGenerator.java
com.adcash.mobileads.AdViewController.java
com.adcash.mobileads.AdcashActivity.java
com.adcash.mobileads.AdcashConversionTracker.java
com.adcash.mobileads.AdcashErrorCode.java
com.adcash.mobileads.AdcashInterstitial.java
com.adcash.mobileads.AdcashReferrerReceiver.java
com.adcash.mobileads.AdcashView.java
com.adcash.mobileads.Adcash.java
com.adcash.mobileads.BaseHtmlWebView.java
com.adcash.mobileads.BaseInterstitialActivity.java
com.adcash.mobileads.BaseUrlGenerator.java
com.adcash.mobileads.BaseVideoView.java
com.adcash.mobileads.BaseWebView.java
com.adcash.mobileads.CustomEventBannerAdapter.java
com.adcash.mobileads.CustomEventBanner.java
com.adcash.mobileads.CustomEventInterstitialAdapter.java
com.adcash.mobileads.CustomEventInterstitial.java
com.adcash.mobileads.DefaultBannerAdListener.java
com.adcash.mobileads.DefaultInterstitialAdListener.java
com.adcash.mobileads.DiskLruCache.java
com.adcash.mobileads.EventForwardingBroadcastReceiver.java
com.adcash.mobileads.FacebookKeywordProvider.java
com.adcash.mobileads.GpsHelper.java
com.adcash.mobileads.HtmlBannerWebView.java
com.adcash.mobileads.HtmlBanner.java
com.adcash.mobileads.HtmlInterstitialWebView.java
com.adcash.mobileads.HtmlInterstitial.java
com.adcash.mobileads.HtmlWebViewClient.java
com.adcash.mobileads.HtmlWebViewListener.java
com.adcash.mobileads.Log.java
com.adcash.mobileads.MraidAbstractController.java
com.adcash.mobileads.MraidActivity.java
com.adcash.mobileads.MraidBanner.java
com.adcash.mobileads.MraidBrowserController.java
com.adcash.mobileads.MraidBrowser.java
com.adcash.mobileads.MraidCommandFactory.java
com.adcash.mobileads.MraidCommandRegistry.java
com.adcash.mobileads.MraidCommand.java
com.adcash.mobileads.MraidDisplayController.java
com.adcash.mobileads.MraidInterstitial.java
com.adcash.mobileads.MraidProperty.java
com.adcash.mobileads.MraidVideoPlayerActivity.java
com.adcash.mobileads.MraidVideoView.java
com.adcash.mobileads.MraidView.java
com.adcash.mobileads.ResponseBodyInterstitial.java
com.adcash.mobileads.SharedPreferencesHelper.java
com.adcash.mobileads.TaskTracker.java
com.adcash.mobileads.Utils.java
com.adcash.mobileads.VastVideoDownloadTask.java
com.adcash.mobileads.VastVideoInterstitial.java
com.adcash.mobileads.VastVideoView.java
com.adcash.mobileads.ViewGestureDetector.java
com.adcash.mobileads.factories.AdFetchTaskFactory.java
com.adcash.mobileads.factories.AdFetcherFactory.java
com.adcash.mobileads.factories.AdViewControllerFactory.java
com.adcash.mobileads.factories.AdcashViewFactory.java
com.adcash.mobileads.factories.CustomEventBannerAdapterFactory.java
com.adcash.mobileads.factories.CustomEventBannerFactory.java
com.adcash.mobileads.factories.CustomEventInterstitialAdapterFactory.java
com.adcash.mobileads.factories.CustomEventInterstitialFactory.java
com.adcash.mobileads.factories.HtmlBannerWebViewFactory.java
com.adcash.mobileads.factories.HtmlInterstitialWebViewFactory.java
com.adcash.mobileads.factories.HttpClientFactory.java
com.adcash.mobileads.factories.MraidViewFactory.java
com.adcash.mobileads.factories.VastManagerFactory.java
com.adcash.mobileads.factories.VastVideoDownloadTaskFactory.java
com.adcash.mobileads.factories.ViewGestureDetectorFactory.java
com.adcash.mobileads.resource.Drawables.java
com.adcash.mobileads.resource.MraidJavascript.java
com.adcash.mobileads.util.AsyncTasks.java
com.adcash.mobileads.util.Base64.java
com.adcash.mobileads.util.DateAndTime.java
com.adcash.mobileads.util.Dips.java
com.adcash.mobileads.util.Files.java
com.adcash.mobileads.util.HttpClients.java
com.adcash.mobileads.util.HttpResponses.java
com.adcash.mobileads.util.HttpUtils.java
com.adcash.mobileads.util.Json.java
com.adcash.mobileads.util.Lists.java
com.adcash.mobileads.util.Mraids.java
com.adcash.mobileads.util.Reflection.java
com.adcash.mobileads.util.ResponseHeader.java
com.adcash.mobileads.util.Streams.java
com.adcash.mobileads.util.Strings.java
com.adcash.mobileads.util.VersionCode.java
com.adcash.mobileads.util.Views.java
com.adcash.mobileads.util.WebViews.java
com.adcash.mobileads.util.vast.VastManager.java
com.adcash.mobileads.util.vast.VastXmlManager.java