Вот код, но получил сообщение об ошибке:Получить байт [] с помощью ByteArrayInputStream из сокета
bin = new ByteArrayInputStream(socket.getInputStream());
Можно ли получить byte[]
с помощью ByteArrayInputStream
из сокета?
Вот код, но получил сообщение об ошибке:Получить байт [] с помощью ByteArrayInputStream из сокета
bin = new ByteArrayInputStream(socket.getInputStream());
Можно ли получить byte[]
с помощью ByteArrayInputStream
из сокета?
Нет. Вы используете ByteArrayInputStream
, когда у вас есть массив байтов, и вы хотите читать из массива, как если бы это был файл. Если вы просто хотите читать массивы байтов из сокета, выполните следующие действия:
InputStream stream = socket.getInputStream();
byte[] data = new byte[100];
int count = stream.read(data);
count
переменная будет содержать количество считанных байт, и данные, конечно, будет в массиве data
.
Вы не можете получить экземпляр ByteArrayInputStream
, прочитав его непосредственно из сокета.
Вам необходимо сначала прочитать и найти содержимое байта.
Затем используйте его для создания экземпляра ByteArrayInputStream
.
InputStream inputStream = socket.getInputStream();
// read from the stream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] content = new byte[ 2048 ];
int bytesRead = -1;
while((bytesRead = inputStream.read(content)) != -1) {
baos.write(content, 0, bytesRead);
} // while
Теперь, когда у вас есть BAOS в руке, я не думаю, что вы все еще нужен bais
экземпляра.
Но, чтобы сделать его полным,
вы можете создать массив байт входного потока, как показано ниже
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
* «но получил сообщение об ошибке:» * Got какая ошибка? Всегда копируйте/вставляйте исключение и вывод ошибки в вопрос (используя теги кода). –
Ваш вопрос не имеет смысла. ByteArrayInputStream считывает байты из массива байтов. Если вы хотите читать из сокета, вы не можете читать из массива байтов. Какую проблему вы пытаетесь решить здесь? – EJP