Java - 将缓冲区转换为字符串(经济方式)

时间:2014-07-25 01:05:08

标签: java string

我读了一些要缓冲的内容:

 char buf[] = new char[4096];     
 int got = reader.read(buf,0,4096);

readLine()不正常,因为东西可以包含" \ n"字符。

然后我需要将buf []转换为String。 String.valueOf(buf)的大小为buf.length()== 4096,并且将包含末尾的垃圾。我需要大小得到的字符串。有2种变态方式可以做到这一点。第一种方法 - 创建大小 got 的新数组,将字节复制到新数组并执行String.valueOf。第二种方式 - 通过char将每个char转换为String附加到String char。是否有更好的方法不涉及奇怪的操作?

3 个答案:

答案 0 :(得分:4)

  

我需要大小为got

的字符串

您可以使用String构造函数String(char[] value,int offset,int count)

String s = new String(buf,0,got);

示例代码:

char buf[] = new char[4096];
buf[0]='a';
buf[1]='b';
buf[2]='c';
int got = 2;
String s = new String(buf,0,got);
System.out.println(s);      // ab

答案 1 :(得分:0)

您可以使用StringBuffer。这就像一个字符串,但可变。所以,例如,像:

StringBuffer sbuff = new StringBuffer();
sbuff.append(buf);
sbuff.setLength(got);
String buffString = sbuff.toString();

答案 2 :(得分:0)

您可以使用append(char[], int, int)之类的StringBuilder,

StringBuilder sb = new StringBuilder();
char buf[] = new char[4096];
int got = reader.read(buf,0,4096);
sb.append(buf,0, got);