【发布时间】:2020-12-29 14:02:40
【问题描述】:
我正在读取来自 TCP 调用的响应,我只需要读取字符。读取每个字符需要太多时间,所以我正在创建响应可能是最大数量的数组。这种方法的问题是响应长度较小且数组大小较大。在将其转换为字符串时,它还使用那些在读取响应时未使用的空白字符,因为它将“NUL”写入日志文件。
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class TestArrayToString {
public static void main(String[] args) throws IOException {
char[] chars = new char[5];
chars[0] = 'K';
chars[1] = 'S';
chars[2] = 'H';
String s = new String(chars);
System.out.println(s);
FileWriter fw = new FileWriter(new File("C://projects//test//test.log"));
fw.write(s);
fw.flush();
fw.close();
}
}
输出
是否有可能在写入时删除该 NUL。
【问题讨论】:
-
您应该知道字节数组中有效的字符数。可以使用
String(byte[] bytes, int offset, int length)构造函数转换成字符串。 -
为什么你必须只阅读字符?如果 TCP 数据包含换行符,您可以使用 BufferedReader 并使用 readLine()。