Androidの内外ストレージ、SharedPreferences(選好設定)および取得スペースの使用状況

5897 ワード

一、Androidの外部ストレージ
まず、アンドロイド携帯電話に移動可能なsdcardがあるかどうかにかかわらず、外部ストレージと内部ストレージがあることを明らかにします.最も重要なのは、モバイル可能なsdcardや携帯電話が持参したストレージ(外部ストレージ)に同じapiでアクセスすることです.
外部ストレージは概念的に複雑ですが、携帯電話をパソコンに接続すると、パソコンで認識できる部分が外部ストレージに違いありません.
外部ストレージのファイルは、ユーザーまたは他のアプリケーションによって変更できます.2種類のファイル(またはディレクトリ)があります.
1.パブリックファイルPublic files:ファイルは自由にアクセスでき、ファイルのデータは他のアプリケーションまたはユーザーにとって意味があり、アプリケーションがアンインストールされた後も、アンインストール前に作成されたファイルは保持されます.例えばcameraアプリでは、生成された写真はみんなアクセスでき、cameraがいなくなっても、写真は残っています.
外部ストレージに公開ファイルを配置したい場合は、getExternalStoragePublicDirectory()を使用します.
apiバージョンが8未満の場合は、g e t E x t e r n alStoragePublicDirectory()ではなく、Environmentを使用します.getExternalStorageDirectory()は、パラメータを持たず、自分でディレクトリを作成することもできず、外部に格納されているルートパスに戻るだけです.
2.プライベートファイルPrivate files:実は外部に格納されているため、このタイプのファイルも他のプログラムにアクセスできますが、1つのアプリケーションのプライベートファイルは他のアプリケーションにはアクセス価値がありません(悪意のあるプログラムを除く).外部ストレージでは、プライベートファイルを適用する価値は、アンインストール後に削除されることです.内部ストレージと同様です.
アプリケーションプライベートファイルを作成する方法はContext.getExternalFilesDir()です.
apiバージョンが8 の は、getExternalFilesDir()ではなくEnvironmentを します.getExternalStorageDirectory()ルートパスを した 、 で とか /Android/data//の のファイル.
すなわちapi 8 のバージョンでは、ファイルを する にプライベートファイルやパブリックファイルの にapiサポートを していない.ルートディレクトリを してから、 で を えるしかありません.
ストレージの8つの :
getExternalCacheDir()/sdcard/Android/data/アプリケーション/cache/
getExternalFilesDir(Environment.DIRECTORY_MUSIC)/sdcard/Android/data/アプリケーション/ファイルタイプディレクトリ/
Environment.getExternalStorageDirectory() メモリカードパスFileオブジェクト"/sdcard/"/mnt/sdcard/"/storage/storage 0/"
Environment.g e t E x t e r n a l S t o r agePublicDirectory(ファイルタイプ)ある のファイルの ディレクトリ、Environmentを する. DIRECTORY_DOWNLODSダウンロードDIRECTORY_ALARMSアラームDIRECTORY_DCIMデジタルカメラメモリDIRECTORY_MOVIES DIRECTORY_MUSICミュージックDIRECTORY_NOTIFICATIONS DIRECTORY_PICTURESピクチャーDIRECTORY_PODCASTSアナウンサーDIRECTORY_RINGTONESベル
Environment.getExternalStorageState()メモリカードのステータスコードを し、Environment. MEDIA_BAD_REMOVALが しくアンインストールされる にカードを いたMEDIA_CHECKINGはMEDIAを していますMOUNTEDは しくマウントされ、MEDIAを み きする ができています.MOUNTED_READ_ONLY しくマウント、 み り MEDIA_NOFSは しくマウントされていますが、ファイルシステムMEDIAはサポートされていません.REMOVED MEDIA_SHAREDはアンインストールされ、uディスクとしてコンピュータに されています.MEDIA_UNMOUNTABLEはMEDIAをマウントできませんでした_UNMOUNTEDにはsdカードが しますが、マウントされていません
Environment.getRootDirectory()             /system
Environment.getDataDirectory()             /data
Environment.getDownloadCacheDirectory()    /cache
、Androidの ストレージ
ストレージはメモリではないことに してください. ストレージはシステム の な にあります.ファイルを ストレージに する は、ファイルのデフォルトはアプリケーションにのみアクセスされ、1つのアプリケーションで されたすべてのファイルはアプリケーションパッケージ と じディレクトリにあります.すなわち,アプリケーションは に されたファイルに され,このアプリケーションに けられる.アプリケーションがアンインストールされると、 ストレージのファイルも されます. には、 ストレージファイルを するときにファイル を み り に すると、 のappは のアプリケーションのデータにアクセスできます. は、 があなたのアプリケーションのパッケージ を っていることであり、1つのファイルの がプライベート(private)である 、パッケージ を っていても のアプリケーションにはアクセスできません. ストレージスペースは られているので です.また、システム やシステムアプリケーションの なデータストレージの でもあり、 ストレージスペースが きると が えなくなります.そのため、 ストレージスペースについては、できるだけ を けなければなりません.Shared PreferencesとSQLiteデータベースは、 ストレージスペースに されます. ストレージは にContextで および される.
ストレージの8つの :
/data/data/アプリケーションパッケージ
getDir(String name,int mode)/data/data/アプリケーション/app_ディレクトリ は ディレクトリを またはアクセスし、Fileオブジェクトを します.このディレクトリで のファイルを できます.サブディレクトリアクセス は、ディレクトリ に して ファイルgetFilesDir()/data/data/アプリケーション/filesに してfilesディレクトリを すFileオブジェクトgetFilesStreamPath(String name)を できません./data/data/アプリケーション/files/ファイル filesディレクトリ の ファイルを すFileオブジェクトを します.これらのファイルは、 の でフローopenFileInput()openFileOutput()を することもできます.
OpenFileInput(String name)openFileOutput(String name,int mode)/data/data/アプリケーション/files/ファイル ファイルストリームMODE_PRIVATE         MODE_APPEND         MODE_WORLD_READABLE         MODE_WORLD_WRITEABLE deleteFile(String name)/data/data/アプリケーション/files/ファイル ファイルfileList()/data/data/アプリケーション/files/ ファイルリストファイル String[] getCacheDir()/data/data/アプリケーション/cache/ キャッシュ( )ディレクトリを し、そのディレクトリを すFileオブジェクトを します.ストレージ が すると、ディレクトリ のファイルが に されます.このディレクトリの サイズ(たとえば1 M)を に し、 を えた はgetDatabasePath(「データベースファイル.db」)を でクリーンアップする があります.
、スペースの を する
* ストレージ/data Environment.getDataDirectory(*) ストレージ/sdcard Environment.getExternalStorageDirectory()*StatFs---------------------------------------------------------------------------------------------------StatFs fs=new StatFs(Fileオブジェクト); ----------------------getBlockCount() ブロック getBlockSize()ブロックサイズgetavailableBlocks()アクセス のあるブロック getFreeBlocks() りのブロック

*ユーザー 、ユーザーの を * はオプション に *xml のテキストファイル/data/data/アプリケーション/shared_prefs/ファイル .xml p 1=getSharedPreferences(ファイル 、MODE_PRIVATE);カスタムファイル p 2=getPreferences(MODE_PRIVATE);Activityクラス はファイル として1つのActivityで、 の み ファイルp 3=PreferenceManagerを み きする.getDefaultSharedPreferences(this);パッケージ はファイル として、 のアプリケーションでは、この ファイルSharedPreferencesメソッドを することができます.この ファイルSharedPreferencesメソッドを することができます.         getInt(String key, int defValue)         getLong(String key, long defValue)         getString(String key, String defValue)         getStringSet(String key, Set defValues)         registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener)         unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener)     SharedPreferences.Editor     --------------------------------------------------         putBoolean(String key, boolean value)         putFloat(String key, float value)         putInt(String key, int value)         putLong(String key, long value)         putString(String key, String value)         putStringSet(String key,Setvalues)remove(String key)clear()apply()commit() :http://blog.csdn.net/androidwifi/article/details/17725989