什么是 InputStream & Output Stream?我们为什么以及何时使用它们?
2022-08-31 05:04:05
有人向我解释什么和是什么?InputStream
OutputStream
我对 和 的用例感到困惑。InputStream
OutputStream
如果您还可以包含一段代码来配合您的解释,那就太好了。谢谢!
有人向我解释什么和是什么?InputStream
OutputStream
我对 和 的用例感到困惑。InputStream
OutputStream
如果您还可以包含一段代码来配合您的解释,那就太好了。谢谢!
和 的目标是抽象出不同的输入和输出方式:流是文件、网页还是屏幕都无关紧要。重要的是您从流接收信息(或将信息发送到该流中)。InputStream
OutputStream
InputStream
用于您阅读的许多内容。
OutputStream
用于您写入的许多内容。
下面是一些示例代码。它假定 和 已创建:InputStream instr
OutputStream osstr
int i;
while ((i = instr.read()) != -1) {
osstr.write(i);
}
instr.close();
osstr.close();
InputStream用于读取,OutputStream用于写入。它们作为装饰器相互连接,以便您可以从所有不同类型的源读取/写入所有不同类型的数据。
例如,您可以将基元数据写入文件:
File file = new File("C:/text.bin");
file.createNewFile();
DataOutputStream stream = new DataOutputStream(new FileOutputStream(file));
stream.writeBoolean(true);
stream.writeInt(1234);
stream.close();
要阅读书面内容:
File file = new File("C:/text.bin");
DataInputStream stream = new DataInputStream(new FileInputStream(file));
boolean isTrue = stream.readBoolean();
int value = stream.readInt();
stream.close();
System.out.printlin(isTrue + " " + value);
您可以使用其他类型的流来增强阅读/写入。例如,您可以引入一个缓冲区来提高效率:
DataInputStream stream = new DataInputStream(
new BufferedInputStream(new FileInputStream(file)));
您可以写入其他数据,例如对象:
MyClass myObject = new MyClass(); // MyClass have to implement Serializable
ObjectOutputStream stream = new ObjectOutputStream(
new FileOutputStream("C:/text.obj"));
stream.writeObject(myObject);
stream.close();
您可以从其他不同的输入源读取:
byte[] test = new byte[] {0, 0, 1, 0, 0, 0, 1, 1, 8, 9};
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(test));
int value0 = stream.readInt();
int value1 = stream.readInt();
byte value2 = stream.readByte();
byte value3 = stream.readByte();
stream.close();
System.out.println(value0 + " " + value1 + " " + value2 + " " + value3);
对于大多数输入流,也有一个输出流。您可以定义自己的流来读取/写入特殊内容,并且有用于读取复杂内容的复杂流(例如,有用于读取/写入ZIP格式的流)。