|
방법 | 설명 |
공유프레퍼런스 | 키-값 쌍으로 사적이고 기초적인 데이터를 저장한다 |
내부저장 | 사적인 데이터를 내부 저장소에 저장한다 |
외부저장 | 공유 데이터를 공유 외부 저장소에 저장한다. |
SQLite 데이터베이스 | 구조화된 데이터를 사적인 데이터베이스에 저장한다. |
네트워크 연결 | 데이터를 네트워크 서버에 저장한다. |
2. 공유 프레퍼런스(Shared Preferences) : 애플리케이션
의 환경 설정 부분 프로그램 C언어에서 공유체개념
3. 내부 공간에 파일 만들기
파일 쓰기
FileOutputStream fos = openFileOutput(FILENAME, Context_MODE_PRIVATE);
// 출력전용의 파일을 오픈한다. 여기서 name은 오픈하고자 하는 파일의 이름이며 mode는 다음과 같은 상수 중의 하나이다.
openFileInput(String name) 입력 전용의 파일을 오픈한다.
mode | 설명 |
MODE_PRIVATE | 혼자만 사용하는 배타적인 모드로 파일을 생성한다. 이 모드가 디포르이다 |
MODE_APPEND | 파일이 이미 있을 경우 덮어 쓰기 모드로 열지 않고 추가 모드로 연다. 이후 기록되는 내용 뒤에 덧붙여진다. |
MODE_WORLD_READABLE | 다른 응용프로그램이 파일을 읽도록 허용한다. |
MODE_WORLD_WRITEABLE | 다른 응용프로그램이 파일을 기록하도록 허용한다. |
-파일읽기
FileInputStream fis = openFileInput(FILENAME); //읽고 싶은 파일의 이름을 인수로openFileInput()을 호출한다. 이 메소드는 FileInputStream객체를 반환한다.
byte[] buffer=new byte[1000];
while(fis.read(buffer)!=-1{ } //read()를 사용하여서 파일로부터 바이트를 읽는다.
fis.close();//스트림을 닫는다.
메소드 | 설명 |
getFilesDir() | 내부파일들이 저장될 때 파일 시스템 디렉터리의 절대 경로를 반환한다. |
getDir() | 내부 스토리지 공간에 디렉터리를 생성하거나 오픈한다. |
deleteFile() | 내부스토리지 공간에 저장된 파일을 삭제한다 |
fileList() | 애플리케이션이 현재 저장한 파일 리스트를 반환한다. |
4. 외부저장공간
내부공간 | 외부공간 |
항상 사용공간 | 항상 사용 가능한 것은 아니다. 사용자가 SD카드를 제거할 수도 있다. |
여기에 저장되는 파일은 해당되는 앱만 사용이 가능하다 | 누구나 읽을 수 있다. |
사용자가 앱을 제거하면 시스템이 앱이 사용하였던 공간도 삭제한다. | 사용자가 앱을 제거할 때, 공용 디렉터리에 저장된 파일은 삭제되지 않는다. 다만 getExternalFilesDir()가 반환하는 디렉터리에 파일을 저장한 경우만 시스템이 삭제한다. |
File getExternalFileDir(String type)
외부 파일 시스템의 디렉터리에 대한 절대 경로를 반환한다. 애플리케이션은 여기에다가 파일을 저장할 수 있다. 이 메소드는 type매개변수을 가지는데 type은 사용자가 원하는 서브 디렉터리의 타입이다.
5. 데이터베이스
초경량급 데이터베이스이다. 디스크파일에 저장한다. 파일형식은 플사할 플랫폼에 독립적이기 때문에 서로 다른 CPU나 운영체제를 가진 시스템 사이에서도 파일을 이동하거나 복사할 수 있다.
데이터 정의 명령어 - CREATE, ALTER, DROP, USE,
데이터 조작 명령어 - SELECT, INSERT, DELETE, UPDATE
6. 네트워크 연결
살습예제 343page 직접풀어보기
====== AndroidManifest. x m l =======
<uses-permission
android:name ="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
==== activityMain.x m l ========
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btnPrev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text=" 이전 그림 " />
<Button
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text=" 다음 그림 " />
</LinearLayout>
<com.cookandroid.project8_2.myPictureView
android:id="@+id/myPictureView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
=== MainActivity.java =====
package com.cookandroid.project8_2;
public class MainActivity extends Activity {
Button btnPrev, btnNext;
myPictureView myPicture;
int curNum;
File[] imageFiles;
String imageFname;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("간단 이미지 뷰어");
btnPrev = (Button) findViewById(R.id.btnPrev);
btnNext = (Button) findViewById(R.id.btnNext);
myPicture = (myPictureView) findViewById(R.id.myPictureView1);
imageFiles = new File("/sdcard/pictures").listFiles();
imageFname = imageFiles[0].toString();
myPicture.imagePath = imageFname;
btnPrev.setxxOnClickListener(new View.xxOnClickListener() {
public void xxonClick(View v) {
if (curNum <= 0) {
Toast.makeText(getApplicationContext(), "첫번째 그림입니다", 0)
.show();
} else {
curNum--;
imageFname = imageFiles[curNum].toString();
myPicture.imagePath = imageFname;
myPicture.invalidate();
}
}
});
btnNext.setxxOnClickListener(new View.xxOnClickListener() {
public void xxonClick(View v) {
if (curNum >= imageFiles.length - 1) {
Toast.makeText(getApplicationContext(), "마지막 그림입니다", 0)
.show();
} else {
curNum++;
imageFname = imageFiles[curNum].toString();
myPicture.imagePath = imageFname;
myPicture.invalidate();
}
}
});
}
}
========== myPictureView.java ========
package com.cookandroid.project8_2;
public class myPictureView extends View {
String imagePath = null;
public myPictureView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (imagePath != null) {
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
canvas.drawBitmap(bitmap, 0, 0, null);
bitmap.recycle();
}
}
}