반응형
안드로이드(Android) raw 폴더에 있는 Text 파일 읽어 오기 |
환경 : Eclipse Mars, Android 4.2.2 |
raw 데이터가 위치하는 폴더에는 다양한 파일들을 둘 수가 있습니다. 리소스 폴더라고 하는데 프로그램 제작에 들어가는 파일들이 위치합니다. 이미지, 텍스트, 음원 등을 보관하고 활용하는 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) 비트맵 이미지를 다양한 방법으로 변형하는 예제 (0) | 2015.01.19 |
---|---|
안드로이드(Android) 이미지다운로드해서 Sdcard 에 저장하기 (3) | 2015.01.15 |
안드로이드(Android) AutoCompleteTextView 위젯을 이용해 단어 자동완성기능 구현 (0) | 2015.01.12 |
안드로이드(Android) EditText 위젯의 입력타입별 예제 (0) | 2015.01.11 |
안드로이드(Android) Chronometer 사용하여 시간측정을 위한 타이머 만들기 (1) | 2015.01.05 |
안드로이드(Android) Chronometer, OnChronometerTickListener 통해 시간알아오기 (2) | 2015.01.04 |
안드로이드(Android) 웹페이지에서 이미지 다운로드 구현 (0) | 2015.01.01 |
안드로이드(Android) ListActivity 를 이용해여 간단한 목록형 화면만들기 (0) | 2014.12.28 |