Đây là mã nhưng đã nhận lỗi:Nhận byte [] bằng ByteArrayInputStream từ một ổ cắm
bin = new ByteArrayInputStream(socket.getInputStream());
Có thể nhận byte[]
sử dụng ByteArrayInputStream
từ một ổ cắm?
Đây là mã nhưng đã nhận lỗi:Nhận byte [] bằng ByteArrayInputStream từ một ổ cắm
bin = new ByteArrayInputStream(socket.getInputStream());
Có thể nhận byte[]
sử dụng ByteArrayInputStream
từ một ổ cắm?
No. Bạn sử dụng ByteArrayInputStream
khi bạn có một mảng byte và bạn muốn đọc từ mảng như thể đó là tệp. Nếu bạn chỉ muốn đọc mảng byte từ các ổ cắm, làm điều này:
InputStream stream = socket.getInputStream();
byte[] data = new byte[100];
int count = stream.read(data);
Biến count
sẽ chứa số byte thực sự đọc, và các dữ liệu của khóa học sẽ được trong mảng data
.
Bạn không thể xem phiên bản ByteArrayInputStream
bằng cách đọc trực tiếp từ ổ cắm.
Bạn cần đọc trước và tìm nội dung byte.
Sau đó, sử dụng nó để tạo một phiên bản 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
Bây giờ, vì bạn có baos trong tay, tôi không nghĩ bạn vẫn cần một ví dụ bais
.
Nhưng, để làm cho nó hoàn chỉnh,
bạn có thể tạo ra dòng đầu vào mảng byte như sau
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
* "nhưng đã nhận lỗi:" * Got gì lỗi? Luôn sao chép/dán ngoại lệ và đầu ra lỗi vào câu hỏi (sử dụng thẻ mã). –
Câu hỏi của bạn không có ý nghĩa. Một ByteArrayInputStream đọc các byte từ một mảng byte. Nếu bạn muốn đọc từ một ổ cắm, bạn không thể đọc từ một mảng byte. Bạn đang cố giải quyết vấn đề gì ở đây? – EJP