Implementation of the IOS cleanup cache feature the second method
Last Update:2015-10-16
Source: Internet
Author: User
<span id="Label3"></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950</td> <td class="code"><code class="objc comments"><code class="objc comments">/**</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">* 清理缓存第二种方法</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">*</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">* @param sender <#sender description#></code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">*/</code></code><code class="objc plain"><code class="objc plain">- (</code></code><code class="objc datatypes"><code class="objc datatypes">void</code></code><code class="objc plain"><code class="objc plain">)clearCache:(</code></code><code class="objc datatypes"><code class="objc datatypes">id</code></code><code class="objc plain"><code class="objc plain">)sender</code></code><code class="objc plain"><code class="objc plain">{</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">//彻底清除缓存第一种方法</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">UIButton * button = sender;</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">[button setTitle:@</code></code><code class="objc string"><code class="objc string">"清理完毕"</code></code> <code class="objc plain"><code class="objc plain">forState:UIControlStateNormal];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSArray</code></code> <code class="objc plain"><code class="objc plain">*paths = </code></code><code class="objc keyword"><code class="objc keyword">NSSearchPathForDirectoriesInDomains</code></code><code class="objc plain"><code class="objc plain">(</code></code><code class="objc keyword"><code class="objc keyword">NSLibraryDirectory</code></code><code class="objc plain"><code class="objc plain">, </code></code><code class="objc keyword"><code class="objc keyword">NSUserDomainMask</code></code><code class="objc plain"><code class="objc plain">, </code></code><code class="objc keyword"><code class="objc keyword">YES</code></code><code class="objc plain"><code class="objc plain">);</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code> <code class="objc plain"><code class="objc plain">*path = [paths lastObject];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code> <code class="objc plain"><code class="objc plain">*str = [</code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code> <code class="objc plain"><code class="objc plain">stringWithFormat:@</code></code><code class="objc string"><code class="objc string">"缓存已清除%.1fM"</code></code><code class="objc plain"><code class="objc plain">, [</code></code><code class="objc keyword"><code class="objc keyword">self</code></code> <code class="objc plain"><code class="objc plain">folderSizeAtPath:path]];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSLog</code></code><code class="objc plain"><code class="objc plain">(@</code></code><code class="objc string"><code class="objc string">"%@"</code></code><code class="objc plain"><code class="objc plain">,str);</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSArray</code></code> <code class="objc plain"><code class="objc plain">*files = [[</code></code><code class="objc keyword"><code class="objc keyword">NSFileManager</code></code> <code class="objc plain"><code class="objc plain">defaultManager] subpathsAtPath:path];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">for</code></code> <code class="objc plain"><code class="objc plain">(</code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code> <code class="objc plain"><code class="objc plain">*p in files) {</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSError</code></code> <code class="objc plain"><code class="objc plain">*error;</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code> <code class="objc plain"><code class="objc plain">*Path = [path stringByAppendingPathComponent:p];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">if</code></code> <code class="objc plain"><code class="objc plain">([[</code></code><code class="objc keyword"><code class="objc keyword">NSFileManager</code></code> <code class="objc plain"><code class="objc plain">defaultManager] fileExistsAtPath:Path]) {</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">[[</code></code><code class="objc keyword"><code class="objc keyword">NSFileManager</code></code> <code class="objc plain"><code class="objc plain">defaultManager] removeItemAtPath:Path error:&error];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">}</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">}</code></code><code class="objc plain"><code class="objc plain">}</code></code><code class="objc comments"><code class="objc comments">/**</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">* 计算单个文件大小</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">*/</code></code><code class="objc plain"><code class="objc plain">- (</code></code><code class="objc datatypes"><code class="objc datatypes">long</code></code> <code class="objc datatypes"><code class="objc datatypes">long</code></code><code class="objc plain"><code class="objc plain">) fileSizeAtPath:(</code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code><code class="objc plain"><code class="objc plain">*) filePath{</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSFileManager</code></code><code class="objc plain"><code class="objc plain">* manager = [</code></code><code class="objc keyword"><code class="objc keyword">NSFileManager</code></code> <code class="objc plain"><code class="objc plain">defaultManager];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">if</code></code> <code class="objc plain"><code class="objc plain">([manager fileExistsAtPath:filePath]){</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">return</code></code> <code class="objc plain"><code class="objc plain">[[manager attributesOfItemAtPath:filePath error:</code></code><code class="objc keyword"><code class="objc keyword">nil</code></code><code class="objc plain"><code class="objc plain">] fileSize];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">}</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">return</code></code> <code class="objc plain"><code class="objc plain">0;</code></code><code class="objc plain"><code class="objc plain">}</code></code><code class="objc comments"><code class="objc comments">/**</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">* 计算目录大小 遍历文件夹获得文件夹大小,返回多少M</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc comments"><code class="objc comments">*/</code></code><code class="objc plain"><code class="objc plain">- (</code></code><code class="objc datatypes"><code class="objc datatypes">float</code></code> <code class="objc plain"><code class="objc plain">) folderSizeAtPath:(</code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code><code class="objc plain"><code class="objc plain">*) folderPath{</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSFileManager</code></code><code class="objc plain"><code class="objc plain">* manager = [</code></code><code class="objc keyword"><code class="objc keyword">NSFileManager</code></code> <code class="objc plain"><code class="objc plain">defaultManager];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">if</code></code> <code class="objc plain"><code class="objc plain">(![manager fileExistsAtPath:folderPath]) </code></code><code class="objc keyword"><code class="objc keyword">return</code></code> <code class="objc plain"><code class="objc plain">0;</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSEnumerator</code></code> <code class="objc plain"><code class="objc plain">*childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code><code class="objc plain"><code class="objc plain">* fileName;</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc datatypes"><code class="objc datatypes">long</code></code> <code class="objc datatypes"><code class="objc datatypes">long</code></code> <code class="objc plain"><code class="objc plain">folderSize = 0;</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">while</code></code> <code class="objc plain"><code class="objc plain">((fileName = [childFilesEnumerator nextObject]) != </code></code><code class="objc keyword"><code class="objc keyword">nil</code></code><code class="objc plain"><code class="objc plain">){</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">NSString</code></code><code class="objc plain"><code class="objc plain">* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">folderSize += [</code></code><code class="objc keyword"><code class="objc keyword">self</code></code> <code class="objc plain"><code class="objc plain">fileSizeAtPath:fileAbsolutePath];</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">}</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc keyword"><code class="objc keyword">return</code></code> <code class="objc plain"><code class="objc plain">folderSize/(1024.0*1024.0);</code></code><code class="objc plain"><code class="objc plain">}</code></code></td> </tr> </tbody> </table><p><p>Implementation of the IOS cleanup cache feature the second method</p></p></span>