日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android手机的内部存储

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android手机的内部存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內部存儲:

在data/data/packagename中(一個app對應一個packagename)

常見文件夾有cache ,code_cache ,files , databases , shared_prefs 和一個lib文件

?

files: 文件緩存目錄,一般存小的文件緩存,如果是圖片,不建議放這里,一般放到外置卡。

cache目錄: 存放一些其他緩存

databases: 存放數據庫

lib: 存放應用的so目錄

shared_prefs: 存放應用的SharedPreferences

?

常用方法:

1. Context.getFilesDir() ? 返回一個File對象,當Log打印出file.getAbsolutePath()時看到的是:

/data/user/0/packagename/files ,

而user下的文件夾0就是data\data的一個鏈接名, 實際位置就是在 /data/data/packagename/files里

注意安裝app后files文件夾里若沒有任何東西時是不會看到這個文件夾的,而執行以下代碼:

File f1 = getFilesDir(); Log.e("TAG","getFilesDir(): " + f1.getAbsolutePath()); try {File dir1 = new File(getFilesDir(),"dir1");if (!dir1.exists()){dir1.mkdir();}File f = new File(dir1, "test1.txt");FileOutputStream fos = new FileOutputStream(f);String txt = "Hello test1!";fos.write(txt.getBytes());fos.close(); }catch (Exception e){e.printStackTrace(); }

結果會自動在/data/data/packagename中先創建一個files文件夾,在files里再創建了一個dir1文件夾,dir1中有一個test1.txt

若不需要創建文件夾,安卓還為我們提供了一個簡便方法,得到可直接在files中寫入文件的輸出流,執行以下代碼:

String fileName = "test2.txt"; String txt = "hello test2"; FileOutputStream fos; try {fos = openFileOutput(fileName,MODE_PRIVATE);fos.write(txt.getBytes());fos.close(); }catch (Exception e){e.printStackTrace(); }

Context.openFileOutput(String name, int mode)返回一個輸出流

Context.openFileInput(String name) 返回一個輸入流

此時目錄結構如下:

?

2. getCacheDir() 和 getCodeCacheDir() 顯然分別返回 /data/data/packagename下cache和code_cache對應的File對象

?

3.在包下創建目錄(與files,cache這些文件夾同級)

File myFile = getDir("myfile",MODE_PRIVATE); if(!myFile.exists()){myFile.mkdir(); }

結果目錄為:

app_myfile 就是自己創建的文件夾

?

總結:

1). 對files:getFilesDir()

==? new File("/data/data/"+ context.getPackageName() + "/files")

(openFileOutput,openFileInput得到的是文件流)

?

2).對cache和code_cache

getCacheDir() 和 getCodeCacheDir()

== new File("/data/data/"+ context.getPackageName() + "/cache") 和 new File("/data/data/"+ context.getPackageName() + "/code_cache")

?

3).對根目錄

getDir(String name, int mode)

== new File("/data/data/"+ context.getPackageName() + "/" + name)

?

4) . 對shared_prefs

1.Context類中的getSharedPreferences(String name, int mode) 方法

SharedPreferences sp = getSharedPreferences("data",MODE_PRIVATE);

2.Activity類中的getPreferences(int mode) 方法

用法同上,不用傳入sp的name是因為使用此方法是會自動將當前活動的類名作為sp的文件名

?

3.PreferenceManager類中的getDefaultSharedPreferences(Context context) 方法

這是一個靜態方法,接收一個Context參數,并自動使用應用程序的包名作為前綴來命名sp文件

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的android手机的内部存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。