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();
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();
}
}
}
}
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();
8 回答
InputStream
和OutputStream
的目标是抽象输入和输出的不同方式:流是文件,网页还是屏幕无关紧要 . 重要的是您从流中接收信息(或将信息发送到该流中) .InputStream
用于您阅读的许多内容 .OutputStream
用于您编写的许多内容 .这是一些示例代码 . 它假设已经创建了
InputStream instr
和OutputStream osstr
:InputStream用于读取,OutputStream用于写入 . 它们作为装饰器彼此连接,以便您可以读取/写入来自所有不同类型的源的所有不同类型的数据 .
例如,您可以将原始数据写入文件:
阅读书面内容:
您可以使用其他类型的流来增强读/写 . 例如,您可以引入缓冲区以提高效率:
您可以编写其他数据,如对象:
您可以从其他不同的输入源读取:
对于大多数输入流,也有输出流 . 您可以定义自己的流来读/写特殊事物,并且有复杂的流来读取复杂的东西(例如,有用于读取/写入ZIP格式的Streams) .
来自Java Tutorial:
流是一系列数据 .
A program uses an input stream to read data from a source, one item at a time:
A program uses an output stream to write data to a destination, one item at time:
来自oracle教程的示例code:
该程序使用字节流将xanadu.txt文件复制到outagain.txt,一次写入一个字节
看看这个SE问题,了解有关高级字符流的更多详细信息,这些字符流是Byte Streams之上的包装器:
byte stream and character stream
您从InputStream读取并写入OutputStream .
例如,假设您要复制文件 . 您将创建一个FileInputStream来从源文件中读取,并创建一个FileOutputStream来写入新文件 .
如果您的数据是字符流,则可以使用FileReader而不是InputStream和FileWriter而不是OutputStream(如果您愿意) .
OutputStream是一个表示写入输出的抽象类 . 有许多不同的OutputStream类,它们会写出某些内容(如屏幕,文件,字节数组或网络连接等) . InputStream类访问相同的东西,但他们从中读取数据 .
这是a good basic example使用FileOutputStream和FileInputStream将数据写入文件,然后将其读回 .
Java流是来自源或目标的数据流 . 源或目标可以是磁盘,内存,套接字或其他程序 . 数据可以是字节,字符或对象 . 这同样适用于C#或C流 . Java流的一个很好的比喻是水从水龙头流入浴缸,然后流入排水系统 .
数据代表流的静态部分;读取和写入方法是流的动态部分 .
InputStream
表示来自源的数据流,OutputStream
表示进入目标的数据流 . 最后,InputStream
和OutputStream
是对数据的低级访问的抽象,例如C文件指针 .Stream :在非专业术语中,流是数据,大多数通用流是数据的二进制表示 .
Input Stream :如果要从文件或任何其他来源读取数据,则使用的流是输入流 . 简而言之,输入流充当读取数据的通道 .
Output Stream :如果要从源(文件等)读取和处理数据,首先需要保存数据,存储数据的平均值是输出流 .
输出流通常与某些数据目的地(如文件或网络等)相关 . 在java输出流中,最终会写入数据,并且结束