在使用Java转换为字符串之前,我应该如何终止char数组

A J*_*son 1 java string

我正在从文件中读取一个char数组,然后使用String构造函数将其转换为字符串.

read = fromSystem.read(b);
String s = new String(b);
Run Code Online (Sandbox Code Playgroud)

这个代码已经在程序中存在了很长时间并且工作正常,但是直到现在它已经读取了数组的完整大小,每次255个字符.现在我正在重复使用该类用于其他目的,并且它的读取大小各不相同.我遇到的问题是,如果它读取,比如说20个字符,然后是15个,那么前一个读取的最后5个仍然在字节数组中.为了解决这个问题,我在读完的内容中添加了一个空字符.

read = fromSystem.read(b);
if (read < bufferLength) {
    b[read] = '\0';
}
String s = new String(b);
Run Code Online (Sandbox Code Playgroud)

如果我那么

System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

它工作,缓冲区的结束不显示.但是,如果我将该字符串传递给消息对话框,那么它仍会显示.还有其他方法可以终止字符串吗?

ato*_*ice 10

使用:

String s = new String(b, 0, read)
Run Code Online (Sandbox Code Playgroud)

代替.