2013-12-26 3 views
0

ПОЖАЛУЙСТА,Загрузка массива из текстового файла в папку с активами (Android)

Я знаю, что этот вопрос задан много раз, но я все еще не могу заставить свой код работать.

У меня есть текстовый файл в папке моих ресурсов, называемый словами.txt. В каждой строке этого текстового файла есть одно слово в строке без пустых строк. Я хочу поместить каждое слово в массив.

Сначала я попытался использовать сканер, но после прочтения многих потоков stackoverflow я узнал, что мне нужно использовать AssetManager.

Вот что я пробовал:

AssetManager assetManager = getAssets(); 
InputStream inputStream = assetManager.open("words.txt"); 

Это дает мне сообщение об ошибке: default constructor cannot handle exception type IOException thrown by implicit super constructor..., прежде чем я даже делать что-нибудь еще. Я не знаю, что это значит.

Также, глядя на api, кажется, что InputStream может читать только байты. Как читать слова из текстового файла?

Потоки подавляющие, потому что кажется, что каждый ответ предлагает другой метод, используя InputStreams, BufferedStreams, FileInputStreams, файлы, папки Res, папки Asset и многие другие языки, с которыми я не знаком. Я просто участвую в разработке приложений для Android и ограниченных возможностях Java.

+0

«AssetManager» и «Сканер» необходим. «Сканер» делает то, что вы указываете в конце: 'byte []' to 'String'. – slezica

+0

Возможный дубликат [При построении конструктора по умолчанию невозможно обработать исключение: type Exception, созданный неявным супер-конструктором] (http://stackoverflow.com/questions/6772709/while-constructing-the-default-constructor-can-not- ручка-исключение типа-excep) – Sach

ответ

0

Используйте это:

Resources rs = getResources(); 
InputStream inputStream = rs.openRawResource(R.raw.sample); 
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); 
while ((line = r.readLine()) != null) { 
    array.append(line); 
} 
0

Вы можете использовать XML для загрузки слова, как показано ниже:

Рез/значений/strings.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="planets_array"> 
     <item>Mercury</item> 
     <item>Venus</item> 
     <item>Earth</item> 
     <item>Mars</item> 
    </string-array> 
</resources> 

В файле класса :

Resources res = getResources(); 
String[] planets = res.getStringArray(R.array.planets_array); 

Source

4

Вы можете сделать, как показано ниже:

try { 
     BufferedReader bReader = new BufferedReader(new InputStreamReader(getAssets().open("file.txt"))); 
     ArrayList<String> values = new ArrayList<String>(); 
     String line = bReader.readLine(); 
     while (line != null) { 
      values.add(line); 
      line = bReader.readLine(); 
     } 
     bReader.close(); 
     for (String v : values) 
      Log.i("Array is ", v); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
0

поставить вас массив внутри Рез/значения/strings.xml в

<string-array name="spinnerNames"> 
    <item>Trust</item> 
    <item>Grade</item> 
    <item>Location</item> 
    <item>Contract Type</item> 
    <item>Speciality</item> 

</string-array> 

и загрузить массив как:

String[] spinnerNames = getResources().getStringArray(R.array.spinnerNames); 
Смежные вопросы