java输出流的高层抽象:java.io.OutputStream
此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。
需要定义 OutputStream 子类的应用程序
必须始终提供至少一种可写入一个输出字节的方法。
OutputStream 实现了两个接口:
1、Closeable:定义输出流需要关闭操作。关闭此输出流并释放与此流有关的所有系统资源。
2、Flushable:定义输出流需要刷新此输出流并强制写出所有缓冲的输出字节。
特点:
和java.io.InputStream一样,他的底层就是byte数组的各自操作
我们来瞅瞅它的定义吧。
public abstract class OutputStream implements Closeable, Flushable {
/**
* Writes the specified byte to this output stream. The general
* contract for <code>write</code> is that one byte is written
* to the output stream. The byte to be written is the eight
* low-order bits of the argument <code>b</code>. The 24
* high-order bits of <code>b</code> are ignored.
写如果特定的byte到 当前的OutputStream输出流,对于int 占用4个字节,只会写入低8位,其他忽略掉。
* <p>
* Subclasses of <code>OutputStream</code> must provide an
* implementation for this method.
*
* @param b the <code>byte</code>.
* @exception IOException if an I/O error occurs. In particular,
* an <code>IOException</code> may be thrown if the
* output stream has been closed. 特别:如果已经关闭再写入,会抛出IOException异常。
*/
public abstract void write(int b) throws IOException;
/**
*写入b数组的所有数据
*/
public void write(byte b[]) throws IOException {
write(b, 0, b.length);
}
/**
* 把b的字节数组中的数据,从b[off] 到b[off+len-1] 逐个的按顺序的写入到输出流
* 这个方法是循环调用write(int)方法,子类最好能覆盖此方法以提供更有效的实现
*
* @param b the data.
* @param off the start offset in the data. 代表从b 字节数组的何处开始取数据
* @param len the number of bytes to write. 从b字节数组取 len长度的数据
*
*/
public void write(byte b[], int off, int len) throws IOException {
if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
for (int i = 0 ; i < len ; i++) {
write(b[off + i]);
}
}
/**
*【jdk解释:】
刷新此输出流并强制写出所有缓冲的输出字节。flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。
如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件),则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。
*/
public void flush() throws IOException {
}
/**
* 关闭此输出流并释放与此流有关的所有系统资源。close 的常规协定是:该方法将关闭输出流。关闭的流不能执行输出操作,也不能重新打开。
*/
public void close() throws IOException {
}
}
分享到:
相关推荐
本文将通过对"rt-source-master.zip"压缩包中的rt.jar源码进行剖析,帮助读者深化对Java核心类库的理解。 首先,rt.jar是Java运行时库的集合,包含了Java标准版API的所有公共类。它由Oracle公司提供,包含了Java SE...
`java.io.InputStream`和`OutputStream`处理文件读写;`ContentResolver`与`Uri`结合,可用于访问多媒体文件和SQLite数据库文件。 4. **源代码结构分析** "文件管理器FileManager"实例通常包含以下组件: - `...
《Java宝典》是一本深度剖析Java编程语言的权威指南,光盘中包含的源代码是作者为了辅助读者理解和实践书中理论知识而精心编写的。这些源文件是学习和掌握Java编程的重要参考资料,它们涵盖了从基础语法到高级特性的...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf