2013-01-03 96 views

回答

2

這是我用來在SD卡或內部存儲上緩存的內容,但要小心。您必須定期清理緩存,特別是在內部存儲上。

private static boolean sIsDiskCacheAvailable = false; 
private static File sRootDir = null; 

public static void initializeCacheDir(Context context){ 
    Context appContext = context.getApplicationContext(); 

    File rootDir = null; 

    if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){ 
     // SD card is mounted, use it for the cache 
     rootDir = appContext.getExternalCacheDir(); 
    } else { 
     // SD card is unavailable, fall back to internal cache 
     rootDir = appContext.getCacheDir(); 

     if(rootDir == null){ 
      sIsDiskCacheAvailable = false; 
      return; 
     } 
    } 

    sRootDir = rootDir; 

    // If the app doesn't yet have a cache dir, create it 
    if(sRootDir.mkdirs()){ 
     // Create the '.nomedia' file, to prevent the mediastore from scanning your temp files 
     File nomedia = new File(sRootDir.getAbsolutePath(), ".nomedia"); 
     try{ 
      nomedia.createNewFile(); 
     } catch(IOException e){ 
      Log.e(ImageCache.class.getSimpleName(), "Failed creating .nomedia file!", e); 
     } 
    } 

    sIsDiskCacheAvailable = sRootDir.exists(); 

    if(!sIsDiskCacheAvailable){ 
     Log.w(ImageCache.class.getSimpleName(), "Failed creating disk cache directory " + sRootDir.getAbsolutePath()); 
    } else { 
     Log.d(ImageCache.class.getSimpleName(), "Caching enabled in: " + sRootDir.getAbsolutePath()); 

     // The cache dir is created, you can use it to store files 
    } 
} 
0

您可以使用Context的getExternalCacheDir()方法獲取文件引用,您可以將文件存儲在SD卡上。當然,您必須像往常一樣進行常規檢查以確保外部存儲器已安裝並可寫入,但這可能是存儲該類型臨時文件的最佳位置。您可能想要做的一件事就是設置可以在緩存目錄中使用的最大空間量,然後,每當需要編寫新的臨時文件時,如果該文件超過最大空間,則開始刪除臨時文件,從最早的文件開始,直到有足夠的空間。 或者,也許像這樣的工作: 「」

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 
File externalRoot = Environment.getExternalStorageDirectory(); 
File tempDir = new File(externalRoot, ".myAppTemp"); 
} 

前面加上應該隱藏文件夾,我相當確定。

相關問題