Android開発におけるデータストレージとアクセスの多様な方法の紹介

3132 ワード

データストレージとアクセス
多くの場合、私たちのソフトウェアは処理後のデータを保存したり、再アクセスしたりする必要があります.
Androidは、データストレージにさまざまな方法を提供しています.それぞれ、次のような方法があります.
ファイル
SharedPreferences
SQLiteデータベース
コンテンツプロバイダ
ネットワーク
ファイルを使用したデータストア
まず、ファイルを使用してデータをどのように保存するかを説明します.ActivityはopenFileOutput()メソッドを提供して、データをファイルに出力することができます.具体的な実現過程はJ 2 SE環境でデータをファイルに保存するのと同じです.
 
  
public class FileActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
...
FileOutputStream outStream = this.openFileOutput("csdnt.txt", Context.MODE_PRIVATE);
outStream.write("CSDN".getBytes());
outStream.close();
}
}

OpenFileOutput()メソッドの最初のパラメータは、ファイル名を指定するために使用され、パス区切り記号「/」を含めることはできません.ファイルが存在しない場合、Androidは自動的に作成します.作成したファイルは、/data/data//filesディレクトリに保存されます.例えば、/data/data/cn.csdn.action/files/csdn.txtでは、Eclipseメニュー「Window」-「Show View」-「Other」をクリックして、ダイアログウィンドウでandroidフォルダを展開し、次のFile Explorerビューを選択し、File Explorerビューで/data/data//filesディレクトリを展開するとファイルが表示されます.
OpenFileOutput()メソッドの第2のパラメータは、操作モードを指定するために使用され、4つのモードがあり、それぞれ:Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:デフォルトの操作モードであり、当該ファイルがプライベートデータであることを表し、アプリケーション自身にしかアクセスできない.このモードでは、書き込まれた内容は元のファイルの内容を上書きし、新たに書き込まれた内容を元のファイルに追加したい場合.Contextを使用できます.MODE_APPEND
Context.MODE_APPEND:モードはファイルが存在するかどうかをチェックし、存在する場合はファイルに内容を追加し、そうでない場合は新しいファイルを作成します.
Context.MODE_WORLD_READADBLEとContext.MODE_WORLD_WRITEABLEは、他のアプリケーションがファイルを読み書きする権限があるかどうかを制御します.
MODE_WORLD_READALBLE:現在のファイルが他のアプリケーションによって読み取れることを示す;MODE_WORLD_WRITEABLE:現在のファイルを他のアプリケーションに書き込むことができることを示します.
ファイルを他のアプリケーションで読み取りおよび書き込みする場合は、次のように入力できます.
openFileOutput("csdn.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
Androidには独自のセキュリティモデルがあり、アプリケーション(.apk)がインストールされるとシステムがuseridに割り当てられ、ファイルなどの他のリソースにアクセスするにはuseridマッチングが必要になります.デフォルトでは、任意のアプリケーションによって作成されたファイル、sharedpreferences、データベースはプライベート(/data/data//filesにある)であるべきであり、他のプログラムはアクセスできません.作成時にContext.MODE_WORLD_READBLEまたはContext.MODE_WORLD_WRITEABLEが指定されていない限り、他のプログラムは正しくアクセスできません.
ファイルの内容を読み込む
/data/data//filesディレクトリに格納されたプライベートファイルを開く場合は、Activityを使用してopenFileInput()メソッドを指定します.
FileInputStream inStream = this.getContext().openFileInput("csdn.txt");
Log.i("FileTest", readInStream(inStream));
readInStream()の方法は、このページの下の注記を参照してください.
または、ファイルの絶対パスを直接使用します.
File file = new File("/data/data/cn.csdn.action/files/csdn.txt");
FileInputStream inStream = new FileInputStream(file);
Log.i("FileTest", readInStream(inStream));
注意:上のファイルパスの「cn.csdn.action」は、コードを記述するときに自分で適用したパッケージに置き換えるパッケージです.
プライベートファイルに対してはそのファイルしか作成できないアプリケーションにアクセスし、ファイルを他のアプリケーションに読み書きできるようにするには、ファイルの作成時にContextを指定することができる.MODE_WORLD_READADBLEとContext.MODE_WORLD_WRITEABLE権限.
Activityでは、getCacheDir()およびgetFilesDir()メソッドも用意されています.
getCacheDir()メソッド/data/data//cacheディレクトリの取得
getFilesDir()メソッド/data/data//filesディレクトリの取得