안드로이드(Android) raw 폴더에 있는 Text 파일 읽어 오기

안드로이드 개발

안드로이드(Android) raw 폴더에 있는 Text 파일 읽어 오기

 

환경 : Eclipse Mars, Android 4.2.2

 

raw 데이터가 위치하는 폴더에는 다양한 파일들을 둘 수가 있습니다. 리소스 폴더라고 하는데 프로그램 제작에 들어가는 파일들이 위치합니다. 이미지, 텍스트, 음원 등을 보관하고 활용하는 raw 폴더를 접근해서 데이터를 가져오는 방법에 대해 알아 보겠습니다. 이번 예제는 text 파일을 두고 내부에 값을 읽어오는 것입니다.  

 

안드로이드(Android) raw 폴더에 있는 Text 파일 읽어 오기

 

텍스트를 넣어둔 /res/raw 는 데이터를 컴파일 하지 않습니다. 그리고 Raw 폴더에 텍스트 데이터를 넣어두고 꺼내 쓸수 있도록 openRawResource() 함수를 제공합니다. InputStream 객체로 리턴하게 되는데, 이것을 while 문을 돌며 ByteArrayoutputStream 에 저장합니다.

 

String data = null;
InputStream inputStream = getResources().openRawResource(R.raw.textfile);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

int i;
try {
	i = inputStream.read();
	while (i != -1) {
		byteArrayOutputStream.write(i);
		i = inputStream.read();
	}
	
	data = new String(byteArrayOutputStream.toByteArray(),"MS949");
	inputStream.close();
} catch (IOException e) {
	e.printStackTrace();
}

 

그리고 문자가 깨지는 것을 방지하기위해 ByteArrayoutputStream 저장되어있던 데이터를 MS949 를 이용해 변환합니다.

 

data = new String(byteArrayOutputStream.toByteArray(),"MS949");

 

이렇게 변환한 값을 리턴하여 화면의 TextView 뿌리게 됩니다. 아래는 activiy 의 전체 소스 입니다.

 

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class TextReadActivity extends Activity {
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_text_read);

		TextView helloTxt = (TextView) findViewById(R.id.hellotxt);
		helloTxt.setText(readTxt());
	}

	private String readTxt() {
		String data = null;
		InputStream inputStream = getResources().openRawResource(R.raw.textfile);
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

		int i;
		try {
			i = inputStream.read();
			while (i != -1) {
				byteArrayOutputStream.write(i);
				i = inputStream.read();
			}
			
			data = new String(byteArrayOutputStream.toByteArray(),"MS949");
			inputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return data;
	}
}

 

 

안드로이드(Android) raw 폴더에 있는 Text 파일 읽어 오기

 

Posted by 녹두장군