我读了一些要缓冲的内容:
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。是否有更好的方法不涉及奇怪的操作?
答案 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);