2017-01-03 16 views
1

當我使用BufferedReader.txt文件空使用的BufferedReader

BufferedReader read = new BufferedReader(
new InputStreamReader(getAssets().open(name))); 
    BufferedReader count = new BufferedReader(
new InputStreamReader(getAssets().open(name))); 

    String line; 
    String str = null; 

    while((line = count.readLine()) != null) 
    { 
     str += read.readLine() + "\n"; 

    } 

得到String比我顯示,在String一個TextView 但它顯示爲空,比字符串的beggining加我String

nullThis is file 1 而不是 This is file 1

我該如何解決這個問題?

+2

? –

+2

'str = null'後面跟着'str + = something',它在當時的意思是'str = null + something',你想知道爲什麼你的字符串中會出現'null'? – Andreas

+0

_str + = _是錯誤的。 –

回答

4

試試看!

BufferedReader read = new BufferedReader(
     new InputStreamReader(getAssets().open(name))); 
BufferedReader count = new BufferedReader(
     new InputStreamReader(getAssets().open(name))); 

String line; 
String str = ""; 

while((line=count.readLine())!=null) 

{ 
    str += read.readLine() + "\n"; 

} 
+0

哦......我以爲'String = null'將'String'設置爲什麼都沒有。它確實是 – Eddie

+0

,但添加到它是錯誤的。 –

+0

@Eddie只要按照[這個鏈接](http://stackoverflow.com/questions/4802015/difference-between-null-and-empty-java-string),你會得到一個非常清晰的想法。 –

3

您正在使用:

String str = null; 

然後

str += read.readLine() + "\n"; 

這是

str = str + read.readLine() + "\n"; 

所以,變量代換後,我們得到:

str = null + read.readLine() + "\n"; 

這意味着我們將它與null結合起來,它會故意生成"null"

嘗試這些線(只有一個)之一:

String str = ""; 
String str = new String(); 
2

可以使用StringBuilder,而不是String。它具有更好的性能,因爲String是不可變的。

[使用StringBuffer如果你想它是線程安全的]。爲什麼不使用`StringBuilder`來讀取流數據

BufferedReader read = new BufferedReader(
new InputStreamReader(getAssets().open(name))); 
    BufferedReader count = new BufferedReader(
new InputStreamReader(getAssets().open(name))); 

    String line; 
    StringBuilder str = new StringBuilder(); 

    while((line = count.readLine()) != null) 
    { 
     str.append(read.readLine()).append("\n"); 
    } 
2

初始化它像

String str = "";