Android中一些数据存储函数的封装
本人博客原文
Android很多手机现在都有EMMC存储(一般是2G),一些手机并没有挂载在getExternalStorageDirectory()这个节点上(该节点用于挂载外部sdcard了).而是挂载到"/mnt/emmc"节点上,另外一些手机把EMMC存储直接挂载到了getExternalStorageDirectory()
这个节点上,而对于真正的外部sdcard挂载到了"/mnt/sdcard2"这个节点上。因此当我们存储一个文件时首先应该存在 getExternalStorageDirectory()
这个节点上,其次是"/mnt/sdcard2"这个节点上,再次是"/mnt/emmc",最后才是手机的内部存储(即“/data”区域)。 另外,在很多手机上,虽然我们使用Context的openFileOutput(FILENAME, Context.MODE_WORLD_READABLE)的方式来创建文件,而且使用ls -l看到该文件对别的应用程序来说其实已经有读的权限,但是别的应用程序实际上还是无法读取这些。这时我们需要在创建该文件的应用程序中对getFilesDir()目录执行"chmod 705"的操作来解决该问题。我特把这些操作进行封装,以便使用。package...;import..File;import..IOException;import..Context;import..Environment;import..StatFs;import..TextUtils;publicclassAppUtil{staticContext;staticvoid(Context){=;}/** get external Storage available space*/publicstaticlong(){if(!Environment.().(Environment.)){return0;}File=Environment.();StatFs=newStatFs(.());long=.();long=.();return*;}/** get external Storage available space*/publicstaticlong(){File=Environment.();StatFs=newStatFs(.());long=.();long=.();return*;}/** get sdcard2 external Storage available space*/publicstaticlong(){if(!Environment.().(Environment.)){return0;}String=();File=newFile();if(!.())return0;StatFs=newStatFs();long=.();long=.();return*;}/** get sdcard2 external Storage total space*/publicstaticlong(){String=();File=newFile();if(!.())return0;StatFs=newStatFs();long=.();long=.();return*;}/** get EMMC internal Storage available space */publicstaticlong(){String=();File=newFile();if(!.())return0;StatFs=newStatFs();long=.();long=.();return*;}/** get EMMC internal Storage total space */publicstaticlong(){String=();File=newFile();if(!.())return0;StatFs=newStatFs();long=.();long=.();return*;}publicstaticlong(){String=();StatFs=newStatFs();long=.();long=.();return*;}/** * 获取手机内部总的存储空间 * @return */publicstaticlong(){File=Environment.();StatFs=newStatFs(.());long=.();long=.();return*;}publicfinalstaticString(){returnEnvironment.()+File.+"";}publicfinalstaticString(String){returnEnvironment.().();}publicfinalstaticString(){return"/mnt/sdcard2";}publicfinalstaticString(){return"/mnt/emmc";}privatestaticString;staticString(){if(==null)=.(null).();return;}privatestaticString;publicfinalstaticString(){if(TextUtils.()){File=.();=.();if(!.()).();String="chmod 705 "+;();}return;}publicstaticboolean(String){String=();if(!=null&&.())returntrue;returnfalse;}publicstaticString(String){if(==null)returnnull;int=.("/");return.(+1);}publicstaticboolean(finalString)throwsSecurityException{ShellThread=newShellThread();.(true);.();int=0;while(!.()&&++<20){try{Thread.(50);}catch(InterruptedException){.();}}if(>=20){.();}return.();}/** 用于执行shell脚本的线程 */privatestaticclassShellThreadextendsThread{privateboolean;privateboolean;privateString;publicboolean(){return;}publicboolean(){return;}/** @param cmd shell命令内容 * @param isReturn 线程是否已经返回 * @param isSuccess Process是否执行成功 */publicShellThread(String){this.=;}@Overridepublicvoid(){try{Runtime=Runtime.();Process;try{=.exec();=(.()==0);}catch(IOException){// TODO Auto-generated catch block e.printStackTrace(); } isSuccess = true; } catch (InterruptedException e) { } isReturn = true;}}}