http://blog.csdn.net/nugongahou110/article/details/48154859
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0923/1557.html
相對(duì)路徑是指書寫文件的部分路徑昙篙,例如\test\Hello.java腊状,該路徑中只包含文件的部分路徑\test和文件的全名Hello.java,部分路徑是指當(dāng)前路徑下的子路徑苔可,例如當(dāng)前程序在d:\abc下運(yùn)行缴挖,則該文件的完整路徑就是d:\abc\test。使用這種形式焚辅,可以更加通用的代表文件的位置映屋,使得文件路徑產(chǎn)生一定的靈活性。java中同蜻,我們應(yīng)當(dāng)盡可能的使用相對(duì)路徑棚点。而在安卓中,大多數(shù)情況下我們使用的都是絕對(duì)路徑湾蔓。因?yàn)橄鄬?duì)路徑是以項(xiàng)目所在路徑為當(dāng)前路徑即寡,java項(xiàng)目中的文件存放在項(xiàng)目路徑下碘饼,所以用相對(duì)路徑可以找到文件幌墓。而安卓項(xiàng)目存放在/data/app路徑下句柠,文件存放在/data/data(內(nèi)部存儲(chǔ))或者/storage/emulated(外部存儲(chǔ))路徑下。所以不能用相對(duì)路徑表示桃序。
內(nèi)部存儲(chǔ)
內(nèi)部存儲(chǔ)位于系統(tǒng)中很特殊的一個(gè)位置杖虾,存儲(chǔ)于內(nèi)部存儲(chǔ)中的文件默認(rèn)是私有的,只能被本應(yīng)用或者與該應(yīng)用具有相同userId的應(yīng)用訪問到媒熊,且應(yīng)用所創(chuàng)建的所有文件都在和應(yīng)用包名相同的目錄下奇适。當(dāng)一個(gè)應(yīng)用卸載之后,內(nèi)部存儲(chǔ)中的這些文件也被刪除泛释。如果你在創(chuàng)建內(nèi)部存儲(chǔ)文件的時(shí)候?qū)⑽募傩栽O(shè)置成可讀可寫滤愕,其他app即可訪問到本應(yīng)用中的數(shù)據(jù)。為了安全考慮怜校,不建議將內(nèi)部存儲(chǔ)的文件權(quán)限設(shè)置成可讀可寫间影,而是通過ContentProvider,Service或者Broadcast訪問茄茁。
內(nèi)部存儲(chǔ)目錄結(jié)構(gòu):
存放緩存魂贬,數(shù)據(jù)庫巩割,私有文件,庫文件付燥,配置信息宣谈。數(shù)據(jù)庫,sp操作這里不提键科。庫文件存放依賴庫闻丑。
內(nèi)部存儲(chǔ)文件常用api:
getCacheDir();//獲取緩存目錄
getFilesDir(); //獲取內(nèi)部存儲(chǔ)根路徑 /data/data/包名/files
fileList(); //列出所有已創(chuàng)建文件
getDir(String dirName,int mode)//創(chuàng)建文件夾
openFileOutput(String fileName,int mode);//寫入文件
openFileInput(String fileName);//讀取文件
deleteFile(String fileName)//刪除文件
外部存儲(chǔ)
存儲(chǔ)于外部存儲(chǔ)的文件可以被所有應(yīng)用和用戶訪問。存儲(chǔ)于外部存儲(chǔ)空間的文件分為public files和private files兩種勋颖,private files 文件在應(yīng)用被刪除時(shí)一起刪除嗦嗡,public files 文件在應(yīng)用被刪除時(shí)不會(huì)被刪除。
外部存儲(chǔ)文件常用api:
Environment.getExternalStorageState();//獲取外部存儲(chǔ)狀態(tài)饭玲,以判斷外部存儲(chǔ)設(shè)備是否可用
getExternalStorageDirectory();//獲取外部存儲(chǔ)根目錄 /storage/emulated/0
getExternalStoragePublicDirectory(String dirName);//獲取根目錄下公共的文件夾 /storage/emulated/0/Pictures
getExternalFilesDir(String dirName);//獲取外部存儲(chǔ)中app的私有文件目錄侥祭。/storage/emulated/0/Android/data/包名/files ,帶參數(shù)可以訪問字目錄茄厘,參數(shù)為子目錄名矮冬。
getExternalCacheDir();//獲取外部存儲(chǔ)中app的私有緩存目錄 /storage/emulated/0/Android/data/包名/cache;