有人能解释一下什么是输入流和输出流吗?
我对InputStream和OutputStream的用例感到困惑。
如果你能在解释的同时附上一段代码,那就太好了。谢谢!
有人能解释一下什么是输入流和输出流吗?
我对InputStream和OutputStream的用例感到困惑。
如果你能在解释的同时附上一段代码,那就太好了。谢谢!
当前回答
输出流通常与一些数据目的地相关,如文件或网络等。在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将数据写入文件,然后再将其读入。
你从一个输入流中读取并写入输出流。
例如,假设您想复制一个文件。您将创建一个FileInputStream来从源文件读取,创建一个FileOutputStream来写入新文件。
如果您的数据是字符流,您可以使用FileReader而不是InputStream,如果您愿意,可以使用FileWriter而不是OutputStream。
InputStream input = ... // many different types
OutputStream output = ... // many different types
byte[] buffer = new byte[1024];
int n = 0;
while ((n = input.read(buffer)) != -1)
output.write(buffer, 0, n);
input.close();
output.close();
流是液体、空气或气体的连续流动。
Java流是从源到目的的数据流。源或目标可以是磁盘、内存、套接字或其他程序。数据可以是字节、字符或对象。这同样适用于c#或c++流。爪哇溪流的一个很好的比喻是水从水龙头流入浴缸,然后流入排水沟。
数据表示流的静态部分;读和写方法是流的动态部分。
InputStream表示来自源的数据流,OutputStream表示进入目的地的数据流。 最后,InputStream和OutputStream是对数据(如C文件指针)的低级访问的抽象。
流:在外行术语中,流是数据,大多数通用流是数据的二进制表示。
输入流:如果您从文件或任何其他源读取数据,则使用的流是输入流。简单地说,输入流充当读取数据的通道。
输出流:如果你想从一个源(文件等)读取和处理数据,你首先需要保存数据,存储数据的意思是输出流。
来自Java教程:
流是数据序列。
程序使用输入流从源读取数据,一次一项:
程序使用输出流将数据写入目标,每次一项:
上图中的数据源和数据目的地可以是保存、生成或使用数据的任何东西。显然,这包括磁盘文件,但源或目标也可以是另一个程序、外围设备、网络套接字或数组。
oracle教程中的示例代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
这个程序使用字节流将xanadu.txt文件复制到outagain.txt,每次写入一个字节
看看这个SE问题,了解更多关于高级字符流的细节,它是字节流上的包装器:
字节流和字符流