чтение текстового файла из r.raw на андроиде

У меня есть файл json в R.raw.test123,

Мне нужно обработать это с помощью GSON.

Шаг первый; прочитать текст в строку, я хочу сделать это с помощью;

BufferedReader r = new BufferedReader(new FileReader(file));

FileReader ожидает строку в качестве имени файла, но как мне превратить R.raw.test123 в строку, которую я могу передать FileReader.

Гуглил часа 4, так и не нашел. И я знаю, что это, наверное, нубский вопрос, но я новичок в программировании дроидов, я работаю в .net, так что для меня это все очень ново...

Спасибо,

Деннис


person Dennis    schedule 05.08.2011    source источник


Ответы (2)


Как ответил hooked82, вы можете использовать get the inputstream с помощью:

InputStream stream = getResources().openRawResource(R.raw.test123);

а затем с помощью метода преобразовать его в строку:

private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append((line + "\n"));
        }
    } catch (IOException e) {
        Log.w("LOG", e.getMessage());
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            Log.w("LOG", e.getMessage());
        }
    }
    return sb.toString();
}

Таким образом, вы можете получить строку с convertStreamToString(stream);.

person ayublin    schedule 05.08.2011
comment
Большое спасибо за проблему с ответом на это, моя первоначальная проблема уже исправлена. Тем не менее для моего собственного изучения мой первоначальный вопрос все еще остается открытым; FileReader ожидает строку в качестве имени файла, но как мне превратить R.raw.test123 в строку, которую я могу передать FileReader. Спасибо за вашу помощь! - person Dennis; 08.08.2011

Как насчет того, чтобы сделать следующее:

InputStream stream = getResources().openRawResource(R.raw.test123);
person hooked82    schedule 05.08.2011
comment
Я решил это с помощью InputStream, да, но все же что-то простое, например, передать имя в FileReader, как это делается? (Спасибо, кстати, Hooked82) - person Dennis; 05.08.2011