有人能解释一下什么是输入流和输出流吗?
我对InputStream和OutputStream的用例感到困惑。
如果你能在解释的同时附上一段代码,那就太好了。谢谢!
有人能解释一下什么是输入流和输出流吗?
我对InputStream和OutputStream的用例感到困惑。
如果你能在解释的同时附上一段代码,那就太好了。谢谢!
当前回答
在继续其他伟大的答案时,用我简单的话来说:
流-像提到的@Sher Mohammad是数据。
输入流—例如是从文件中获取输入—数据。这种情况是当我有一个文件(用户上传一个文件-输入)-我想读取我们在那里有什么。
输出流-反之亦然。例如,您正在生成一个excel文件,并将其输出到某个地方。
“如何写入”文件,是在发送方(excel工作簿类)定义的,而不是在文件输出流。
请看这个例子。
try (OutputStream fileOut = new FileOutputStream("xssf-align.xlsx")) {
wb.write(fileOut);
}
wb.close();
其他回答
在继续其他伟大的答案时,用我简单的话来说:
流-像提到的@Sher Mohammad是数据。
输入流—例如是从文件中获取输入—数据。这种情况是当我有一个文件(用户上传一个文件-输入)-我想读取我们在那里有什么。
输出流-反之亦然。例如,您正在生成一个excel文件,并将其输出到某个地方。
“如何写入”文件,是在发送方(excel工作簿类)定义的,而不是在文件输出流。
请看这个例子。
try (OutputStream fileOut = new FileOutputStream("xssf-align.xlsx")) {
wb.write(fileOut);
}
wb.close();
输出流通常与一些数据目的地相关,如文件或网络等。在java中,输出流是数据最终写入和结束的目的地
import java.io.printstream;
class PPrint {
static PPrintStream oout = new PPrintStream();
}
class PPrintStream {
void print(String str) {
System.out.println(str)
}
}
class outputstreamDemo {
public static void main(String args[]) {
System.out.println("hello world");
System.out.prinln("this is output stream demo");
}
}
OutputStream是表示写入输出的抽象类。有许多不同的OutputStream类,它们写入特定的东西(如屏幕、文件、字节数组或网络连接等)。InputStream类访问相同的东西,但是它们从中读取数据。
下面是一个很好的基本示例,使用FileOutputStream和FileInputStream将数据写入文件,然后再将其读入。
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格式的流)。
流:在外行术语中,流是数据,大多数通用流是数据的二进制表示。
输入流:如果您从文件或任何其他源读取数据,则使用的流是输入流。简单地说,输入流充当读取数据的通道。
输出流:如果你想从一个源(文件等)读取和处理数据,你首先需要保存数据,存储数据的意思是输出流。