Java DataInputStream是否转换为字节数组?

Java DataInputStream是否转换为字节数组?,java,arrays,stream,byte,tostring,Java,Arrays,Stream,Byte,Tostring,我有一个DataInputStream和一个方法,它应该返回一个字符串。我知道,我的数据流接收到一个包含字符串的数据包。但是我写的代码没有编译。我使用TCP套接字和流来发送/接收数据。重要的是,我必须使用Java1.8编译器!这就是为什么我不能在.readAllBytes()中使用 如您所见,我首先创建了一个新的ByteArray变量。在此之后,byteArray应转换为字符串 简短回答: byte[] bytes = new byte[in.available()]; 或 长答案: byte

我有一个DataInputStream和一个方法,它应该返回一个字符串。我知道,我的数据流接收到一个包含字符串的数据包。但是我写的代码没有编译。我使用TCP套接字和流来发送/接收数据。重要的是,我必须使用Java1.8编译器!这就是为什么我不能在.readAllBytes()中使用


如您所见,我首先创建了一个新的ByteArray变量。在此之后,byteArray应转换为字符串

简短回答:

byte[] bytes = new byte[in.available()];

长答案:

byte[] bytes = new byte[in.available()];
对于固定大小的流

InputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 });
byte[] targetArray = new byte[initialStream.available()];
如果您不知道基础数据的确切大小

InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); // not really unknown
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[1024];
while ((nRead = is.read(data, 0, data.length)) != -1) {
    buffer.write(data, 0, nRead);
}

buffer.flush();
byte[] byteArray = buffer.toByteArray();
从java 9开始,您可以使用:

InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 });
byte[] data = is.readAllBytes();

充分利用资源:您可以找到更多其他替代方法来实现这一点

简短回答:

byte[] bytes = new byte[in.available()];

长答案:

byte[] bytes = new byte[in.available()];
对于固定大小的流

InputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 });
byte[] targetArray = new byte[initialStream.available()];
如果您不知道基础数据的确切大小

InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); // not really unknown
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[1024];
while ((nRead = is.read(data, 0, data.length)) != -1) {
    buffer.write(data, 0, nRead);
}

buffer.flush();
byte[] byteArray = buffer.toByteArray();
从java 9开始,您可以使用:

InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 });
byte[] data = is.readAllBytes();

usefull Resources:您可以找到更多其他替代方法来执行此操作

代码不会编译,因为您在方法返回类型(Sting而不是String)中有一个输入错误。请看答案。对不起!这是我的一个错误,但这不是它无法编译的原因。我对代码未编译的错误行进行了注释,因为您在方法返回类型(Sting而不是String)中有一个输入错误。请看答案。对不起!这是我的一个错误,但这不是它无法编译的原因。我评论的那行是错误