OutputStream 类是 Java IO API 中所有输出流的基类。子类包括 BufferedOutputStream,FileOutPutStream 等等,
输出流和目标媒介
输出流往往和某些数据的目标媒介相关联,比如文件,网络连接,管道等。当写入到输出流的数据逐渐输出完毕时,目标媒介是所有数据的归属地。
Writer(byte)
writer(byte) 方法用于把单个字节写入到输出流中。OutputStream 的 Writer(byte) 方法将一个包含了待写入数据的 int 变量作为参数进行写入,只有 int 类型的第一个字节会被写入,其余位会被忽略。
OutputStream 的子类可能会包含 write 方法替代方法。比如 DataOutputStream 允许你利用 writeBoolean(); writeDouble(); 等方法将基本类型的 int,long,float,double,boolean 变量写入。
这是一个 OutputStream 的 write() 方法例子:
OutPutStream output = new FileOutputStream("c:\\data\\text.txt");
while(hasMoreData()){
int data = getMoreData();
output.write(data);
}
output.close();
这个例子首先创建了带写入的 FileInputStream。再进入 while循环之后,循环的判断条件是 hasMoreData() 方法的返回值。hasMoreData() 方法实现不予展示,请把这个函数理解为:有剩余可写数据时,返回 true,否则返回 false。
write(byte[])
OutputStream 同样包含了将字节数据中全部或者部分数据写入到输入流中的方法,分别是 Write(byte[]) 和 write(byte[], int offset, int length).
write(byte[]) 把字节数组中的所有数据写入到输出流中。
write(byte[],int offset, int length) 把字节数据中从 offset 位置开始,length 个数据写入到输出流中。
flush()
OutputStream 的 flush() 方法将所有写入到 OutputeStream 的数据冲刷到相应的目标媒介中。比如,如果输出流死 FileOutputStream,呢么写入到其中的数据可能并没有真正的写入到磁盘中。即使所有的数据都写入了 FileOutputStream,这些数还是有可能保留在内存中。通过调用 flush(); 方法,可以把缓冲区内的数据刷新到磁盘中
close()
当你结束数据写入时,需要关闭 OutputStream。通过调用 close() 可以达到这一点。因为 Outputstream 的各种 write 方法可能会抛出 IO 异常,所以你需要把调用 close() 的关闭操作在 finally 块中执行。这是一个 OutputStream 调用 close() 的例子。
OutputStream output = nul;;
try{
output = new FileOutputstream("文件");
while(hasMoreData()){
int data = getMoreData();
output.write(data);
}
}finally{
if(output != null){
output.close();
}
}