为什么在Java中使用ByteArrayInputStream而不是byte[]。
2022-09-03 06:43:24
据我所知,它用于读取数据。为什么我应该使用它而不是简单(例如从DB中读取它)。ByteArrayInputStream
byte[]
byte[]
它们之间有什么区别?
据我所知,它用于读取数据。为什么我应该使用它而不是简单(例如从DB中读取它)。ByteArrayInputStream
byte[]
byte[]
它们之间有什么区别?
如果输入始终是 ,则你是对的,通常不需要流。如果你不需要它,就不要使用它。ByteArrayInputStream的另一个优点是,它作为一个非常强烈的指示,表明你打算将字节是只读的(因为流不提供用于更改它们的接口),尽管重要的是要注意程序员通常仍然可以直接访问字节,所以你不应该在安全是一个问题的情况下使用它。byte[]
但是,如果它有时是一个,有时是一个文件,有时是一个网络连接,等等,那么你需要对“字节流,我不在乎它们来自哪里”进行某种抽象。这就是输入流。当源恰好是一个字节数组时,ByteArrayInputStream是一个很好的输入流。byte[]
这在很多情况下都很有用,但要给出两个具体的例子:
byte[]
InputStream
byte[]
流还具有不必同时在内存中具有所有字节的优点,如果数据的大小很大并且可以轻松以小块形式处理,则这很方便。
如果您选择,那么您必须生成轮子来明确地进行读取,跳过和跟踪当前索引byte[]
byte data[] = { 65, 66, 67, 68, 69 }; // data
for (int index = 0; index < data.length; index++) {
System.out.print((char) data[index] + " ");
}
int c = 0;
ByteArrayInputStream bInput = new ByteArrayInputStream(data);
while ((bInput.read()) != -1) {
System.out.println(Character.toUpperCase((char) c));
}