Androidデータストレージ(二)Fileデータ内部ストレージ

6727 ワード

Javaは、ファイルを操作するための完全なIOストリームシステムを提供しています.Androidは、内部メモリや外部メモリなど、携帯電話のメモリ上のファイルにアクセスすることもサポートしています.
Androidでは、デバイス自体のストレージデバイスまたは外部のストレージデバイスにデータを保存するためのファイルを作成できます.デフォルトでは、ファイルは異なるプログラム間で共有できません.アプリケーションがアンインストールされると、これらのファイルは削除されます.
二、Fileデータ内部記憶
1、アプリケーションのプライベートフォルダ(data/data/パッケージ名)にファイルを保存する
パッケージ名のフラグに基づいて作成されるフォルダなので、そのアプリケーションのプライベートフォルダと呼ばれます.このようなストレージには2つの方法があります.
1つ目の方法は、Javaプラットフォームの実装と同様に、data/data/パケット名パスに基づいてIOストリームを直接操作してデータを格納する.
第2の方法は、Contextが提供する方法を使用して直接操作することである.
1つ目の方法はJavaプラットフォームの下の基本と同じで、あまり言わないで、2つ目の方法を見てください.
①、内部メモリのプライベートフォルダにファイル書き込みデータを作成する:
1、ファイル名と操作モードによってopenFileoutput()メソッドを呼び出し、FileOutputStreamストリームを返す
2、write()メソッドを呼び出し、ファイルにデータを書き込む
3、close()メソッドを呼び出してストリームを閉じる
例:
String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
, : Context.MODE_PRIVATE    = 0   , , , , , 。 Context.MODE_APPEND
Context.MODE_APPEND    = 32768  , , 。
Context.MODE_WORLD_READABLE = 1 
Context.MODE_WORLD_WRITEABLE = 2 


②、 :

1、 openFileInput() , , FileInputStream

2、 read()

3、 close()


public class InteralFile_Activity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		try {
               //      ,     
                FileOutputStream outputStream=openFileOutput("test.txt", MODE_PRIVATE);
		BufferedWriter writer=new  BufferedWriter(new OutputStreamWriter(outputStream));
		writer.write("12123");
		writer.close();
		
                //    
		FileInputStream inputStream=openFileInput("test.txt");
		BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
		String line=reader.readLine();
		Log.i("Test", line);
                reader.close();
                } catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


③、 Context :

openFileInput openFileOutout :

File Explorer / data /data / /files /

Java IO , , Android 。 , 。

Android , :

1、getFilesDir()

, data /data / /files 

, :

File file = new File("/data/data/cn.itcast.action/files/itcast.txt");

2、getDir()      ( )

3、deleteFile()  ( files , )

4、fileList()   , 。


④、

, , getCacheDir() , 。
  
   ,Android 。 , 。 , , 1 mb。 , 。



2、 Resources Assets

Android , , Assets 。 res/raw assets 。 APK 。

, , 。

①、res/raw :

Context

try {
			InputStream inputStream1=getResources().openRawResource(R.raw.test);//     
			byte[] buffer1=new byte[256];
			inputStream1.read(buffer1);
			Log.i("Test", new String(buffer1).trim());
			inputStream1.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

Uri

Uri uri=Uri.parse("android.resource://" + getPackageName() + "/"+R.raw.test);

②、assets :

try {
			InputStream inputStream3=getAssets().open("test.txt");
			byte[] buffer2=new byte[256];
			inputStream3.read(buffer2);
			Log.i("Test", new String(buffer2).trim());
			inputStream3.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

AssetManager list ,
try {
            String[] str=getAssets().list("");
            for(String s:str) //       ,         
            Log.i("Test", s);
        } catch (IOException e) {
            e.printStackTrace();
        }