100java字节流与字符流(字节输出流:OutputStream)

147 阅读2分钟

字节流与字符流(字节输出流:OutputStream)

 

Java.io.OutputStream 介绍

如果想要通过程序进行内容的输出,则可以使用

Java.io.OutputStream类,

 

那么首先来观察这类的定义结构:

Public abstact class OutputStream

Extends Object

Implements Closeable,Flushable

 

可以发现OutputStream类实现了Closeable,Flushable两个接口,这两个接口里面有各自的方法;

Closeable:

public void close() throw IOException;

Flushable:

public void flush() throw IOException;

 

而在OutputStream类里面实际上还定义有其他方法

 

  • 将给定的字节数组内容全部输出:

public void write(byte[ ] b) throws IOException;

 

  • 将部分的字节数组内容输出:

public void write (byte[ ] b ,int off , int len) throws IOException;

  • 输出单个字节:

public abstract void write (int b) throws IOException;

 

但是OutputStream是一个抽象类,所以按照抽象类的原则来讲,如果要想为父类实例化,那么就需要使用子类。

 

因为方法和名称都已经被父类定义好了,所以此处我们所关注的只是子类的构造方法。如果要进行文件的操作,

 

可以使用FileOutputStream类来处理,这个类的构造:

 

  • 接受File类(覆盖):

 public FileOutputStream(File file) throws FileNotFoundException;

  • 追加内容:

public FileOutputStream(File file, Boolean append) throws

 

FileNotFoundException;

 

 

 

范例:实现文件的内容输出

public class TestDemo{

public static void main (String[]args) throws Exception {

File file = new File("d:"+File.separator + "hello.txt");//1,通过File类定义文件路径

if (!file.getParentFile().exist()){//必须保证父目录存在

file.getParentFile().mkdirs();//创建目录

}

 

//2.OutputStream是一个抽象类,所以需要通过子类进行实例化,意味着只能进行文件处理

OutputStream output=new FileOutputStream(file);

 

//3、进行文件的输出处理

String msg="www.mldn.cn";//这个是要求输出内容

output.write(msg.getBytes());//将内容变为字节数组

 

//4、关闭输出

output.close();}}

在进行输出的时候所有的文件会自动帮助用户创建,不再需要编写creatNewFile()方法手工创建了。

这个时候的程序如果重复执行实际上并不会出现追加的情况,因为默认的状态就是覆盖的重复输出,

 

所以如果要追加内容,需要更换FileOutputStream类的构造方法:

OutputStream output=new FileOutputStream(file,true);

 

如果要换行则在字符串的最后追加“\r\n”。如果要部分输出则更换 write()方法:

Output.wirte(msg.getBytes(),0,3);// 将内容变为字节数组

 

整个的输出流程和之前面向对象所学习到的操作模式是完全相同的,唯一的区别是FileOutputStream类里面多了一些文件内容的操作支持。