파일 입출력 시 한글 처리

2010. 3. 15. 12:06안드로이드 개발

파일 생성이 안되어 한참 헤메다가 새삼스럽게 퍼미션 문제가 생각이 나서 금방 해결해버렸다. -_-;;; 아직도 안드로이드 시스템에 대한 적응 부족인 듯하다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

안드로이드 어플리케이션에서 한글을 저장하면 기본적으로 UTF-8로 저장이 된다. 문자열을 저장 시에 길이와 String형 변수를 byte형으로 바꿔 저장을 한다.

File file = new File(myDir, filename);
FileOutputStream fileStream = new FileOutputStream(file);

string = "한글 테스트";
byte []tempByte = string.getBytes();
int length = string.length();
fileStream.write(length);
fileStream.write(tempByte);

fileStream.close(); 

불러올 때도 byte형으로 그냥 가져오면 제대로 한글 데이터를 읽어오지 못하는 문제가 발생한다. InputStreamReader를 "UTF-8"로 세팅한 다음 char형으로 받아오니까 정상적으로 한글 문자열을 읽어올 수 있게 되었다.

FileInputStream fileStream = new FileInputStream(file);
Reader in = new InputStreamReader(fileStream, "UTF-8"); 

int length = in.read();
char []tempByte = new char[length];
in.read(tempByte);
String string = new String(tempByte);
Toast.makeText(context, string, Toast.LENGTH_LONG).show();

fileStream.close(); 

생각보다 쉽게 해결되어 다행이다.