티스토리 뷰

목차

    반응형

    안드로이드 txt 읽기 예제, InputStream 사용 (한글 깨짐 해결)


    아래 안드로이드 TXT 예제(InputStream 사용)에서는 임의 XML 파일 이외에도 미가공 파일을 사용할 수 있다. res / 밑에 raw폴더와 asset 폴더에 오디오, 비디오, text 파일을 저장하고 해당 파일을 읽을 수 있다.


    InputStream을 이용해 raw 리소스 읽어 들이는 형식과 asset에서 읽어 들이는 형식으로 몇 개 짜보았다. main Keword는 InputStream으로 읽어서, 1byte씩 조각내서 쓴다.


    한글 때문에 뻑나면, StreamReader로 해당 charset에 맞춰서 읽는다. String이나 StringBuffer나 StringBuilder 모두 사용해봤는데, 그다지 차이는 없는 듯.


    안드로이드 InputStream 예제[안드로이드 txt 읽기 예제, InputStream 사용 (한글 깨짐 해결)


    [안드로이드 예제 InputStream] 1. asset road resource


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private String getStringAssetFile(Activity activity) throws Exception {
        AssetManager as = activity.getAssets();
        InputStream is = as.open("text1.txt");
     
        // InputStreamReader isr = new
        // InputStreamReader(as.open("text1.txt"),"EUC-KR");
     
        String text = convertStreamToString(is);
        is.close();
     
        return text;
    }
    cs


    [안드로이드 예제 InputStream] 2. inputStream -> String


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private String convertStreamToString(InputStream is) throws IOException {
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
         int i = is.read();
     
        while (i != -1) {
            bs.write(i);
            i = is.read();
        }
        return bs.toString();
    }
    cs


    [안드로이드 예제 InputStream] 3. raw road resource -> String-> wirte String Builder


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    private String getStringFromRawFile(Activity activity) throws IOException {
     
        Resources r = activity.getResources();
        InputStream is = r.openRawResource(R.raw.text2);
         InputStreamReader r2 = new InputStreamReader(is);
        StringBuilder str = new StringBuilder();
     
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
     
        while (true) {
            int i = r2.read();
     
            if (i == -1)
                break;
            else {
                char c = (char) i;
                str.append(c);
                bs.write(c);
            }
        }
        // StringBuilder sb = sb.append(c);
        // Str    ing myText = is.close();
        return bs.toString();
    }
    cs


    안드로이드 txt 읽기 예제, InputStream 사용 (한글 깨짐 해결)

    반응형