如何尋找(更改位置)ByteArrayInputStream
(java.io
)?這是如此明顯,但我似乎無法在任何地方找到一種方法(mark
/reset
是不夠的,我需要設置的位置在InputStream
任何地方)。使用java.io尋找ByteArrayInputStream
如果不能使用java.io
來完成,我必須切換到java.nio
並使用ByteBuffer
,我怎麼能得到類似DataOutputStream
一個ByteArrayOutputStream
使用java.nio
包裹的東西嗎?我沒有找到任何類型的自動調整大小的緩衝區。
編輯:我發現了一種方法來實現我正在嘗試做的事情,但它有點混亂。 ImageIO.createImageInputStream
創建了一個ImageInputStream
,這正是我想要的(可以查找和讀取原語)。但是,使用ByteArrayInputStream
將返回FileCacheImageInputStream
,這意味着它將字節數組複製到一個文件中以進行查找。
這是我第一次嘗試使用Java IO類,它已經完全消極。它缺少一些基本的(IMO)功能,並且有很多方法可以做同樣的事情(例如從文件中讀取原始文件,您可以使用RandomAccessFile
,DataInputStream
+ FileInputStream
,FileImageInputStream
,FileChannel
+ ByteBuffer
,甚至更多)。
你看到使用'seek'有什麼問題嗎? – 2010-09-25 06:27:46
@Vilay Mathew:什麼'尋找'方法?我沒有看到任何ByteArrayInputStream。 – asdfghjkl 2010-09-25 07:16:58
java中的文件I/O是一個巨大的混亂。我把它教給一年級學生,並試圖簡化它,但這總是一個混亂點。 – Fixee 2013-09-17 03:09:45