2014-09-23 5 views
-2

Я работаю над своего рода журнальным приложением, которое содержит много файлов txt, которые я прочитал из текста (только чтение не пишет). И я немного смущен, я прочитал документация о хранении файлов, но, похоже, не вернула правильный способ хранения файлов txt. Должны ли эти файлы находиться в активах? Возможно ли иметь папки внутри активов? И если да, то как я могу передать эти папки?Хранение файлов txt

ответ

0

res/raw будет хорошим местом для их размещения. Если вы разместили текстовый файл с именем «article.txt» в папке с необработанным ресурсом, вы должны начать с размещения файла в InputStream, как это (обратите внимание, что «ctx» - это контекст, который наследует Activity):

InputStream inputStream = ctx.getResources().openRawResource(R.raw.article); 

Затем вы включаете InputStream в строку. Это можно сделать примерно по 1000 способов. Вот один из способов:

InputStreamReader inputreader = new InputStreamReader(inputStream); 

BufferedReader buffreader = new BufferedReader(inputreader); 
String line; 
StringBuilder text = new StringBuilder(); 

try { 
    while ((line = buffreader.readLine()) != null) { 
     text.append(line); 
     text.append('\n'); 
    } 
} catch (IOException e) { 
    return null; 
} 

String fileContentsStr = text.toString(); 

Вот полностью рабочий метод (с использованием выше метода преобразования), чтобы включить текстовый файл из исходной папки в строку. Что я получил с этого поста Android read text raw resource file.

public static String readRawTextFile(Context ctx, int resId) 
{ 
    InputStream inputStream = ctx.getResources().openRawResource(resId); 

    InputStreamReader inputreader = new InputStreamReader(inputStream); 
    BufferedReader buffreader = new BufferedReader(inputreader); 
    String line; 
    StringBuilder text = new StringBuilder(); 

    try { 
    while ((line = buffreader.readLine()) != null) { 
     text.append(line); 
     text.append('\n'); 
    } 
    } catch (IOException e) { 
    return null; 
    } 
    return text.toString(); 
} 

Использования «article.txt» до сих пор, вы могли бы назвать этот метод от деятельности, как так:

readRawTextFile(this, R.raw.article); 
+0

спасибо за ваш ответ, в чем разница между сырой папкой и папкой активов ? Можно ли добавить к ним иерархию папок? – james

+0

Эта статья должна помочь вам представить структуру проекта для проектов Android https://developer.android.com/tools/projects/index.html. Невозможно добавить подпапки в любую папку res, это включает в себя значение, drawable, raw и другие. Однако вы можете добавлять вложенные папки в активы. Ответ, который я предоставил, касается файлов необработанных ресурсов, но есть способы читать в .txt-файлах из папок активов и подпапок активов. – erversteeg

+0

Да, я знаю спасибо, проблема не в том, чтобы прочитать о том, что лучше для многих файлов txt? сырье? активы? не имеет значения? – james

Смежные вопросы