主页>技术知识>详情

Eclipse用流接取数组 输出的是□方块 怎么办

villain/2022-02-23/113阅读 /0评论
Eclipse用流接取数组 输出的是□方块 怎么办简介:OutputStream os = socket.getOutputStream();String str = "您好, 我想咨询。";os.write(str.getBytes()); -----

Eclipse用流接取数组 输出的是□方块 怎么办

OutputStream os = socket.getOutputStream();

String str = "您好, 我想咨询。";

os.write(str.getBytes());

--------------------------------------------------

InputStream is = socket.getInputStream();

byte[] b = new byte[1024];

is.read(b);

System.out.println(new String(b));
--------------------------------------------

这是我 的两个流 结果输出来就是 您好我想咨询□□后面一堆方块


解决方法:你要获取要读取的字节数组的长度
那我如何获取啊……求指教
你去看看inputstream的方法,可以获取长度

byte[] b 的长度超过了“您好,我想咨询。”的长度,超过长度部分都为0,生成字符串是无法识别的字符,所以变成方框。

需要根据 InputStream 内容的长度构造字符数组。或者先使用 ByteArrayOutputStream 接收,再转成字符串。

InputStream is = socket.getInputStream();
ByteArrayOutputStream receiver = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = is.read(buffer)) != -1) {
  receiver.write(buffer, 0, len);
}
System.out.println(new String(receiver.toByteArray()));




别用西文字体,用编译工具默认的字体就不会了

本文用户投稿或网站收集转载,如有侵权请联系本站。