android 파일 작업―assets 와 raw 파일 의 내용 읽 기

4615 단어 androidassetsraw
Resources 와 Assets 에서 온 파일 은 읽 기만 할 수 있 고 쓸 수 없 는 동작 입 니 다.
assets 폴 더 안의 파일 은 모두 원본 파일 형식 을 유지 하고 있 으 며,AssetManager 로 바이트 흐름 으로 파일 을 읽 어야 합 니 다.
1.먼저 Activity 에서 getAssets()를 호출 하여 AssetManager 인용 을 가 져 옵 니 다.
2.AssetManager 의 open(String fileName,int accessMode)방법 으로 읽 을 파일 과 접근 모드 를 지정 하면 입력 스 트림 을 얻 을 수 있 습 니 다.
3.그 다음 에 open file 이 있 는 input Stream 으로 파일 을 읽 고 읽 은 후에 input Stream.close()를 기억 합 니 다.
4.AssetManager.close()를 호출 하여 AssetManager 를 닫 습 니 다.
실현 절차:
1.assets 폴 더 와 res/raw 폴 더 를 각각 만 듭 니 다.(주의해 야 할 raw 파일 은 res 아래 new 이 고 raw 라 는 폴 더 를 만 듭 니 다)

2.txt 파일 두 개 를 만 들 고 asset 과 raw 폴 더 에 복사 합 니 다.

3.실 현 된 효과:

4.구현 코드:
(1)레이아웃 파일:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context="base.readassetsfile.MainActivity">
  <Button
    android:textSize="20sp"
    android:text="@string/aasets_txt"
    android:id="@+id/readFile"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
  <Button
    android:textSize="20sp"
    android:text="@string/raw"
    android:id="@+id/readRawFile"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</LinearLayout>
(2)구체 적 인 실현:

package base.readassetsfile;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.readFile).setOnClickListener(this);
    findViewById(R.id.readRawFile).setOnClickListener(this);
  }
  @Override
  public void onClick(View v) {
    switch (v.getId()){
      case R.id.readFile:
        readAsset();
        break;
      case R.id.readRawFile:
        readRaw();
        break;
    }
  }
  public void readAsset(){
    try {
      //        
      InputStream inputStream=getResources().getAssets().open("Test.txt");
      //        
      InputStreamReader isReader=new InputStreamReader(inputStream,"UTF-8");
      //  bufferReader     
      BufferedReader reader=new BufferedReader(isReader);
      String out="";
      while((out=reader.readLine())!=null){
        Log.d("        :",out);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public void readRaw(){
    try {
      //        
      InputStream inputStream=getResources().openRawResource(R.raw.test);
      //            
      InputStreamReader isReader=new InputStreamReader(inputStream,"UTF-8");
      //  bufferReader     
      BufferedReader reader=new BufferedReader(isReader);
      String out="";
      try {
        while((out=reader.readLine())!=null){
          Log.d(" raw          :",out);
        }
      } catch (IOException e) {
        e.printStackTrace();
      }
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  }

}

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기