Android - SD 카드에 파일 읽고 쓰기, SQLite3 조작하기
출처 : http://blog.naver.com/alonglog/130096289426
안드로이드 - SD 카드에 파일 읽고 쓰기, SQLite3 조작하기
파일 조작...!
안드로이드 폰의 앱은 자바로 개발된다. 당연히 자바의 입출력을 이용하면 쉽게 가능하다.
하지만 안드로이드 개발 툴킷(이하 SDK)에서는 안드로이드에서 쉽게 사용할 수 있는 API를 제공한다.
그 함수는 openFileOuput()과 openFileInput()이다.
이 두 함수는 자바의 파일 입출력을 안드로이드에서 쉽게 해주는 함수들이다.
하지만 이 두 함수의 경우 경로 구별자인 "/"가 파일 이름에 존재하면 에러를 반환해버린다.
즉 현재의 앱폴더가 아니라면 파일을 생성할 수가 없다.
이 말은 SD 카드에 파일을 생성할 수 없다는 것을 말한다.
SD Card에 파일을 생성하기 위해서는 자바의 파일 조작 API를 이용할 수 밖에 없다.
파일 조작 API를 이용하기 전에 가장 먼저 할일!!!
SD 카드에 파일을 쓸 수 있는 권한을 주는 것이다.
"AndroidManifest.xml" 파일에 권한을 명시해야 SD 카드에 파일을 쓸 때 에러가 발생하지 않는다.
위 문장을 추가해 주자!! 그래야만 읽고 쓸 수 있다.
그럼 이제 파일을 쓰는 방법에 대해서 알아보자.
우선 SD 카드의 경로를 알아낸 후 객체를 생성하고 쓸 수 있는지 확인한 후
파일을 생성한다. 그리고 원하는 글을 쓴다.
이를 수행하는 코드는 아래와 같다.
File root = Environment.getExternalStorageDirectory() if(root.canWrite()){ File file = new File(root, "파일명"); FileWriter writer = new FileWriter(file); BufferedWriter out = new BufferedWriter(writer); out.write("쓸 내용"); } else{ 쓸 수 없다면 권한에 대해서 다시 한 번 확인하자. }
위 코드에는 표시되어 있지 않지만 예외상황이 발생할 수 있는 함수들이기 때문에 IOException 처리를 해줘야 한다.
다음은 파일을 읽어오는 코드이다.
File root = Environment.getExternalStorageDirectory()
if(root.canWrite()){
File file = new File(root, "파일명");
FileReader reader = new FileReader(file);
BufferedReader in = new BufferedReader(reader);
String str = reader.readLine();
} else {
읽을 수 없음. 권한 문제를 확인해보자.
}
위 코드에서 readLine()이 null 문자를 반환할 때까지 읽으면 파일의 내용을 모두 읽어 올 수 있다.
=================================================================================-
SQLite3 다루기.
Android SDK에서는 기본적으로 SQLite3 API를 내장하고 있다.
간단하게 객체를 생성하고 쿼리하는 방법을 정리하고 넘어가자.
전체적인 코드를 적고 필요한 내용을 주석으로 처리하는 식으로 정리하고 넘어가겠다.
//DB 생성
//원형 : openOrCreateDatabase(String name, int mode, CursorFactory factory)
//name : DB 이름
//mode
// MODE_PRIVATE : 자기 자신만 접근 가능
// MODE_WORLD_READABLE : 누구나 읽기 가능
// MODE_WORLD_WRITEABLE : 누구나 쓰기 가능
//factory : ???
SQLiteDatabase myDatabase = openOrCreateDatabase("DB 이름", 모드, null)
//테이블 생성
//void execSQL(String sql) throws SQLException
//sql : SQL 문법을 따르는 쿼리문
//myDatabase.create(CursorFactory factory)를 이용해서도 생성 가능
myDatabase.execSQL(query);
//레코드 입력
//long myDatabase.insert(String table, String nullColumnHack, ContentValue values)를 이용해서도 생성 가능
myDatabase.execSQL(query);
//레코드 값 쿼리
//리턴 값이 존재하기 때문에 execSQL() 함수를 사용하면 안됨
//원형 Cursor SQLiteDatabase.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
//인자 값들은 Select 문 쿼리에서 사용하는 문법들이다.
//자세한 내용을 developer.android.com이나 SQL 쿼리문에 관해서 검색해보자.
Cursor log_cur = myDatabase.query("테이블 이름", null, null, null, null, null, null);
//레코드 삭제하기
//int SQLiteDatabase.delete(String table, String whereClause, String[] whereArgs)을 이용해도 가능
myDatabase.execSQL(query);
//테이블 삭제하기
//함수를 보지 못했다..
myDatabase.execSQL(query);
이상으로 데이터베이스 및 테이블을 생성하고 다루는 방법을 알아봤다.
======================================================================-
'scrap > Android' 카테고리의 다른 글
android 가로모드 막기 & 세로모드 막기 (0) | 2011.02.03 |
---|---|
android EditText tip (0) | 2011.02.03 |
[Android] 간단한 데이터의 저장/로드. SharedPreferences (0) | 2011.02.03 |
Android - 파일 입출력, 파일 공유, SD 카드 (0) | 2011.02.03 |
android txt 불러쓰기 (0) | 2011.02.03 |