2012-08-12 123 views
1

我一直在嘗試讀取一個txt文件。 TXT文件包含的行e.g讀取txt文件內容並存儲在數組中

First Line 
Second Line 
Third Line 
. 
. 
. 

現在,我使用下面的代碼

InputStream is = null; 
try { 
    is = getResources().getAssets().open("myFile.txt"); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

ArrayList<String> arrayOfLines = new ArrayList<String>(); 

Reader reader; 
//char[] buffer = new char[2048]; 
try { 
    Reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
    int n; 
    while ((n = reader.read()) != -1) { 

    } 
}catch (Exception e) { 
    e.printStackTrace(); 
} 

我的問題是,我怎麼能存儲在ArrayList中的每一行。 Ofc我們必須使用支票"/n"但是如何。

回答

2

您也可以使用Scanner類。

Scanner in = new Scanner(new File("/path/to/file.txt")); 
while(in.hasNextLine()) { 
    arrayOfLines.add(in.nextLine()); 
} 

您不必擔心\n,因爲Scanner.nextLine() will skip the newline.

+0

它存儲的話不僅沒有全線。 – 2012-08-12 00:27:58

+0

我的錯誤。檢查編輯。 – Makoto 2012-08-12 00:28:48

0

此:

int n; 
while ((n = reader.read()) != -1) { 

} 

應該看起來可能是這樣的:

String line = reader.readLine(); 
while (line!=null) { 
    arrayOfLines.add(line); 
    line = reader.readLine(); 
} 

由於您使用的是BufferedReader,你應該叫readLine(),而不是讀成字符緩衝區。 Reader聲明還需要BufferedReader

+0

的readLine是未定義類型讀者 – 2012-08-12 00:23:43

+0

@umar你需要改變你的'讀者reader'成'的BufferedReader reader' – 2012-08-12 00:25:16

2

此代碼應工作。

ArrayList<String> arrayOfLines = new ArrayList<String>(); 
FileInputStream fstream = new FileInputStream("myfile.txt"); 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    String strLine; 
    while ((strLine = br.readLine()) != null) { 
    arrayOfLines.add(strLine); 
    }