字节输出流:OutputStream
字节的数据以Byte类型为主实现的操作,在进行字节内容输出的时候可以使用OutputStream类完成,这个类的基本定义如下:
public abstract class OutputStream extends Object implements Closeable, Flushable
首先发现这个类继承了两个接口,于是基本的对应关系如下:
Closeable:首先需要知道OutputStream是在JDK1.0时就已经存在的,而Closeable则是在JDK1.5的时候才提出的,而Closeable有继承了AutoCloseable,提供了close()方法
public interface Closeable extends AutoCloseable {
public void close() throws IOException;
}
Flushable:此类也是在JDK1.5时提供的,提供了flush()方法
public interface Flushable {
public void flush() throws IOException ;
}

OutputStream类定义的是公共的输出操作标准,而在这个操作标准里面一共定义有三个内容输出的方法:
| No. | 方法名称 | 类型 | |
|---|---|---|---|
| 1 | public abstract void write(int b) throws IOException; | 普通 | 输出单个字节数据 |
| 2 | public void write(byte b[]) throws IOException; | 普通 | 输出一组字节数据,这也是使用最多的方法 |
| 3 | public void write(byte b[], int off, int len) throws IOException; | 普通 | 输出部分字节数据 |
但是需要注意的一个核心问题在于:OutputStream类毕竟是一个抽象类,而这个抽象类如果要想获得实例化对象,按照传统的认识应该通过子类实例的向上转型完成,如果说现在要进行的是文件的处理操作,则可以选用FileOutputStream子类:

因为最终都需要发生向上转型的处理关系,那么对于此时的FileOutputStream子类核心的关注点就可以放在构造方法上了:
【覆盖】构造方法:public FileOutputStream(File file) throws FileNotFoundException;
【追加】构造方法:public FileOutputStream(File file, boolean append) throws FileNotFoundException;
范例:使用OutputStream类实现内容的输出
package cn.mldn.demo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator + "hello" +
File.separator + "mldn.txt") ; // 1.指定要操作的文件的路径
if (!file.getParentFile().exists()) { // 文件不存在
file.getParentFile().mkdirs(); // 创建父目录
}
OutputStream output = new FileOutputStream(file); // 2.通过子类实例化
String str = "www.mldn.cn"; // 要输出 的文件内容
output.write(str.getBytes()); // 3.将字符串变为字节数组
output.close(); // 4.关闭资源
}
}
本程序是采用了最为标准的形式实现了输出的操作处理,并且在整体的处理之中,只是创建了文件的父目录,但是并没有创建文件,而在执行后会发现文件可以自动帮助用户创建。另外需要提醒的是,由于OutputStream 子类也属于AutoCloseable接口的子类,所以对于close()的方法也可以简化使用。
范例:自动关闭处理
package cn.mldn.demo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator + "hello" +
File.separator + "mldn.txt") ; // 1.指定要操作的文件的路径
if (!file.getParentFile().exists()) { // 文件不存在
file.getParentFile().mkdirs(); // 创建父目录
}
try(OutputStream output = new FileOutputStream(file, true)) {
String str = "www.mldn.cn\r\n"; // 要输出 的文件内容
output.write(str.getBytes()); // 3。将字符串变为字节数组
} catch (IOException e) {
e.printStackTrace();
}
}
}
是否使用自动的关闭取决于你项目的整体结构,另外还需要提醒大家的是,整个程序中最终是输出了一组的字节数据,但是不要忘记OutputStream类之中定义的输出方法一共有三个,只不过其余的两个使用的机会较少。
本文介绍了Java中的OutputStream类,重点讲解了其字节输出功能,包括write方法及其变体,以及FileOutputStream用于文件操作的实例。同时讨论了Closeable和Flushable接口的应用。通过FileOutputStream的构造方法和自动关闭的示例,展示了如何进行高效的内容输出和资源管理。

675

被折叠的 条评论
为什么被折叠?



