Làm cách nào để tìm kiếm (thay đổi vị trí) của một số ByteArrayInputStream
(java.io
)? Nó là một cái gì đó rất rõ ràng, nhưng tôi dường như không thể tìm thấy một phương pháp cho bất cứ nơi nào (mark
/reset
là không đủ, tôi cần phải đặt vị trí bất cứ nơi nào trên InputStream
).Tìm kiếm ByteArrayInputStream bằng cách sử dụng java.io
Nếu nó không thể được thực hiện bằng java.io
và tôi phải chuyển sang java.nio
và sử dụng một ByteBuffer
, làm thế nào tôi có thể nhận được một cái gì đó tương tự như một DataOutputStream
gói một ByteArrayOutputStream
sử dụng java.nio
? Tôi không tìm thấy bất kỳ loại bộ đệm tự động thay đổi kích thước.
EDIT: Tôi đã tìm thấy một cách để đạt được những gì tôi đang cố gắng thực hiện, nhưng hơi lộn xộn một chút. ImageIO.createImageInputStream
tạo ra một ImageInputStream
, đó là chính xác những gì tôi muốn (có thể tìm kiếm và đọc nguyên thủy). Tuy nhiên, sử dụng một ByteArrayInputStream
trả về một FileCacheImageInputStream
, về cơ bản có nghĩa là nó sao chép mảng byte vào một tệp chỉ để tìm kiếm.
Đây là lần đầu tiên tôi cố gắng sử dụng các lớp Java IO và nó đã hoàn toàn tiêu cực. Tính năng này thiếu một số tính năng cơ bản (IMO) và có nhiều cách để làm điều tương tự (ví dụ: đọc nguyên thủy từ tệp bạn có thể sử dụng RandomAccessFile
, DataInputStream
+ FileInputStream
, FileImageInputStream
, FileChannel
+ ByteBuffer
và thậm chí nhiều hơn).
bạn có thấy vấn đề gì khi sử dụng 'tìm kiếm' không? –
@Vilay Mathew: Phương pháp 'tìm kiếm' là gì? Tôi không thấy bất kỳ trên ByteArrayInputStream. – asdfghjkl
File i/o trong java là một mớ hỗn độn lớn. Tôi dạy nó cho học sinh năm nhất và cố gắng làm cho nó đơn giản, nhưng nó luôn luôn là một điểm của sự nhầm lẫn. – Fixee