그러냐

Android Internal Storage 사용하기 본문

android

Android Internal Storage 사용하기

관절분리 2016. 1. 28. 11:02
반응형

참조] http://d.android.com/guide/topics/data/data-storage.html#filesInternal

You can save files directly on the device's internal storage. By default, files saved to the internal storage are private to your application and other applications cannot access them (nor can the user). When the user uninstalls your application, these files are removed.

 

기기의 내부 저장 공간에 직접적으로 파일을 저장할 수 있습니다.(OS가 올라가있는 메모리) 기본적으로 파일들은 여러분이 만든 어플리케이션에 비공개되는 내부 저장소에 저장되고 다른 어플리케이션들은 그 파일에 접근할 수 없습니다.(유저도 접근 할 수 없어요.) 유저가 여러분이 만든 어플리케이션을 삭제하게 되면 그 파일들 또한 같이 삭제됩니다.

 


1. 내부 저장소에서 파일 읽기 


FileInputStream fis = context.openFileInput("directory.data");

// 바이트로 읽어오기

byte[] buffer = new byte[20];

fis.read(buffer);

...

fis.close();


// 또는 오브젝트로 읽어오기 ( class Directory implements Serializable )

 

ObjectInputStream ois = new ObjectInputStream(fis);

Directory directory = (Directory) ois.readObject();

ois.close();

 


 

2. 내부 저장소에 파일 쓰기
 

FileOutputStream fos = context.openFileOutput("directory.data", Context.MODE_PRIVATE);

// 바이트로 쓰기

String string = "hello world!";

fos.write(string.getBytes());

fos.close();


// 또는 오브젝트로 쓰기

 

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(directory);

oos.close();

 

 


Tip: If you want to save a static file in your application at compile time, save the file in your project res/raw/ directory. You can open it with openRawResource(), passing the R.raw.<filename> resource ID. This method returns an InputStream that you can use to read the file (but you cannot write to the original file).

만약 컴파일 시점에 여러분의 어플리케이션 내부 정적 파일을 저장하고 싶다면, 프로젝트에서 res/raw/ 디렉토리에 파일을 저장하면 됩니다. 그 파일은 R.raw.<filename> = resource ID를  인자값으로 넘겨주는 openRawResource() 메소드를 사용하여 열 수 있습니다.  이 메소드는 파일을 읽을 수 있게 InputStream을 반환합니다.(하지만 기존 파일에 쓰는 것은 할 수 없습니다.)


3. res/raw 에 저장된 파일 읽기


// 어떤 이유로 파일명을 조합해서 읽어오려 할 경우

 

String filename = null;


String number = new DecimalFormat("0000").format(qNumber);

switch(qType) {

case QType.QTYPE_D: filename = "d" + number; break;

case QType.QTYPE_E: filename = "e" + number; break;

case QType.QTYPE_M: filename = "m" + number; break;

case QType.QTYPE_S: filename = "s" + number; break;

case QType.QTYPE_T: filename = "t" + number; break;

case QType.QTYPE_W:

}

 

int resId = context.getResources().getIdentifier(filename, "raw", "android.guyentec.myosu");


// 바로 아이디로 얻으려할 경우

int resId = r.raw.directory;


InputStream is = context.getResources().openRawResource(resId);


참조 : http://blog.naver.com/jolangma?Redirect=Log&logNo=150102343630



출처 : http://nmshome.tistory.com/24

반응형