使用 BufferedReader 时在 String 的开头添加 Null

Null is added in the beginning of the String when using BufferedReader

我正在使用 BufferedReader.txt 文件

中获取 String
 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";

    }

比我在 TextView 中显示 String 但它显示 null 而不是我的 String

nullThis is file 1 而不是 This is file 1

我该如何解决这个问题?

试试这个!

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";

}

您正在使用:

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 ();

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

[如果希望它是线程安全的,请使用 StringBuffer].

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");
    }

一样初始化它
String str = "";