2011-12-16 12 views
6

Devo leggere un file dict.txt che contiene una stringa per riga e aggiungerli a un arraylist.Reading InputStream to Arraylist

ho provato questo:

public ArrayList<String> myDict = new ArrayList<String>(); 

InputStream is = (getResources().openRawResource(R.raw.dict)); 
BufferedReader r = new BufferedReader(new InputStreamReader(is)); 
try { 
    while (r.readLine() != null) { 
     myDict.add(r.readLine()); 
    } 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

ma qualcosa che non va ...

+0

voi stanno leggendo due volte una volta e una seconda volta mentre aggiungo alla lista. –

risposta

12

Stai iterazione due volte in ogni ciclo

String line; 
while ((line=r.readLine()) != null) { 
    myDict.add(line); 
} 
+0

La variabile "linea" nella risposta deve essere di tipo ArrayList? – Donshon

8

Utilizzo di Apache IOUtils:

List<String> lines = IOUtils.readLines(inputStream, "UTF-8"); 
+1

Sì! SEMPRE specificare una codifica. È una buona abitudine essere dentro – Necreaux