【发布时间】:2012-10-05 12:20:04
【问题描述】:
显然,下面的代码给出了一个相当奇怪的结果。
char[] data = new char[5];
data[0] = 'a';
data[1] = 'b';
data[2] = 'c';
out.println("'" + new String(data) + "'");
'abc□□'
有没有办法从字符数组创建一个字符串,同时考虑到整个数组可能不会被字符填充到末尾?
问题原因:当使用 Reader.read(char[]) 方法时,你给它一个字符数组来填充,我只能假设它不会被完全填充,除非你很幸运,当你到达流的尽头。所以想知道如何将其转换为可以附加到StringBuffer 的字符串。现在意识到虽然read 方法实际上返回了读取的字节数,但我假设它可以与StringBuffer.append(char[], int, int) 结合使用,这使得我的问题没有实际意义。但是,仍然是我很好奇的东西,而不是我通过谷歌搜索找到的东西,所以我想这个问题在这里得到答案是件好事;)
【问题讨论】:
-
解决方案是否必须处理嵌入的空字符,如果是,行为应该是什么?
-
如果嵌入你的意思是与其他字符混合,那么没有。
-
这里真正的问题是空字符最初是如何到达那里的?您是否忽略了更远的读取结果计数?
-
@EJP 老实说,直到我发布这个问题之后,我才想到阅读结果,所以这个问题现在对于我的特殊情况来说有点实际,但仍然很好奇是否有任何聪明的解决方案何时你没有那个数:)
-
Reader.read(char[]) 返回读取了多少个字符。