안드로이드 앱을 개발하다 보면 이미지, 텍스트 파일, 폰트, JSON 데이터 등 다양한 정적 리소스를 앱 패키지 내부에 포함시켜야 할 때가 있습니다. 이 파일들을 인터넷에서 다운로드하거나 외부 저장소에 저장하는 대신, 앱 자체에 번들링하여 언제든지 쉽게 접근하고 싶을 때 유용한 것이 바로 AssetManager입니다.
이번 포스팅에서는 AssetManager를 사용하여 앱의 assets 폴더에 있는 파일에 접근하고 내용을 읽어오는 방법을 MainActivity.java와 activity_main.xml 두 파일만을 사용하여 간단하게 구현해 보겠습니다.
우선 assets 폴더를 생성하고 파일을 추가해보도록 하겠습니다.

1. Project 뷰에서 app/src/main 디렉터리를 마우스 오른쪽 버튼으로 클릭합니다.
2. New -> Folder -> Assets Folder를 선택합니다.
3. Target Source Set은 기본값인 main을 그대로 두고 Finish를 클릭합니다.
4. 그러면 app/src/main/assets 경로에 assets 폴더가 생성됩니다.
그리고 해당 폴더에 my_asset_file.txt 파일을 생성하고 원하는 내용을 입력 후 저장합니다.
이번 예제에서는
[이것은 assets 폴더에 있는 텍스트 파일입니다. AssetManager를 통해 성공적으로 읽어왔습니다!]
라는 내용의 텍스트를 저장했습니다.
전체 코드입니다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="16dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/asset_content_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textSize="15sp"
android:textColor="@android:color/black"
android:padding="8dp"
android:background="#F0F0F0"
tools:text="에셋 파일 내용이 여기에 표시됩니다."/>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
private TextView assetContentTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
assetContentTextView = findViewById(R.id.asset_content_text_view);
// AssetManager를 사용하여 에셋 파일 읽기
readAssetFile("my_asset_file.txt");
}
private void readAssetFile(String fileName) {
AssetManager assetManager = getAssets(); // AssetManager 인스턴스 얻기
InputStream inputStream = null;
BufferedReader reader = null;
StringBuilder stringBuilder = new StringBuilder();
try {
// AssetManager.open()을 사용하여 InputStream 얻기
inputStream = assetManager.open(fileName);
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
// 파일 내용을 한 줄씩 읽어 StringBuilder에 추가
while ((line = reader.readLine()) != null) {
stringBuilder.append(line).append("\n"); // 줄바꿈 문자 추가
}
// TextView에 읽어온 내용 표시
assetContentTextView.setText(stringBuilder.toString());
} catch (IOException e) {
e.printStackTrace();
// 파일 읽기 실패 시 에러 메시지 표시
assetContentTextView.setText("에셋 파일 읽기 실패: " + e.getMessage());
} finally {
// 사용한 리소스는 반드시 닫아주어야 합니다.
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
시연 결과입니다.

'안드로이드 자바' 카테고리의 다른 글
| [Java][Android] RXJava 사용하기 (0) | 2025.07.13 |
|---|---|
| [Java][Android] PackageManager 사용해서 앱 정보 가져오기 (0) | 2025.07.07 |
| [Java][Android] Hilt 활용 예시 만들기 (2) | 2025.06.28 |
| [Java][Android] Html.fromHtml() 로 HTML 텍스트 표시하기 (3) | 2025.06.24 |
| [Java][Android] ViewFlipper 사용해서 뷰 전환 애니메이션 구현하기 (1) | 2025.06.17 |