2011-07-28 37 views
4

任何人都可以注释掉这段代码,让我更好地了解这段代码中发生了什么?缓存位图代码混淆

谢谢。

private void putBitmapInDiskCache(Uri url, Bitmap avatar) {  
File cacheDir = new File(context.getCacheDir(), "thumbnails"); 
File cacheFile = new File(cacheDir, ""+url.hashCode());  
try {  
    cacheFile.createNewFile();  
    FileOutputStream fos = new FileOutputStream(cacheFile);  
avatar.compress(CompressFormat.PNG, 100, fos);  
fos.flush();  
fos.close();  
} catch (Exception e) {  
Log.e(LOG_TAG, "Error when saving image to cache. ", e);  
} 
} 

读他们很相似:

fis = new FileInputStream(cacheFile); 
Bitmap local = BitmapFactory.decodeStream(fis); 

回答

7
/** 
* Write bitmap associated with a url to disk cache 
*/ 
private void putBitmapInDiskCache(Uri url, Bitmap avatar) {  
    // Create a path pointing to the system-recommended cache dir for the app, with sub-dir named 
    // thumbnails 
    File cacheDir = new File(context.getCacheDir(), "thumbnails"); 
    // Create a path in that dir for a file, named by the default hash of the url 
    File cacheFile = new File(cacheDir, ""+url.hashCode());  
    try {  
     // Create a file at the file path, and open it for writing obtaining the output stream 
     cacheFile.createNewFile();  
     FileOutputStream fos = new FileOutputStream(cacheFile); 
     // Write the bitmap to the output stream (and thus the file) in PNG format (lossless compression)  
     avatar.compress(CompressFormat.PNG, 100, fos); 
     // Flush and close the output stream  
     fos.flush();  
     fos.close(); 
    } catch (Exception e) { 
     // Log anything that might go wrong with IO to file  
     Log.e(LOG_TAG, "Error when saving image to cache. ", e);  
    } 
} 

第二部分:

// Open input stream to the cache file 
fis = new FileInputStream(cacheFile); 
// Read a bitmap from the file (which presumable contains bitmap in PNG format, since 
// that's how files are created) 
Bitmap local = BitmapFactory.decodeStream(fis); 
+0

谢谢!你错过了最后一部分。关于阅读文件。 –

+0

已更新为包含第二部分 – antlersoft

+0

在第二部分中,CachFile部分有哪些内容?我如何知道什么是cacheFile的名称? –