美文网首页
*字节流与字符流2(OutputStream)

*字节流与字符流2(OutputStream)

作者: 秋笙fine | 来源:发表于2019-01-29 16:55 被阅读0次

OutputStream类是专门进行字节输出的一个类,这个类的定义如下:

public abstract class OutputStream
extends Object
implements Closeable, Flushable

首先可以发现OutputStream类实现了两个接口:
Closeable接口(JDK1.5之后才提供):

public interface Closeable extends AutoCloseable{
  public void close() throws IOException
  }

最有意思的是在JDK1.7时候引入了一个非常神奇的自动关闭机制AutoCloseable接口:

public interface AutoCloseable{
        public void close() throws Exception;
}

然后是Flushable接口:(JDK1.5之后)

public interface Flushable{
public void flush() throws IOException
}

而我们的OutputStream是在JDK1.0之后有的,这个类原本就定义了close与flush方法,所以如上两个接口可以忽略,关注类内方法。

在OutputStream中一共提供有3个输出方法:

输出单个字节:
public abstract void write(int b)
throws IOException

输出全部字节数组:public void write(byte[] b)
throws IOException

输出部分字节数组:public void write(byte[] b,
int off,
int len)
throws IOException

这三个方法里面最重要的是第三个,输出部分字节数组。

OutputStream本身是属于抽象类,如果想为抽象类进行对象的实例化操作,那么一定要使用抽象类的子类,本次由于要进行文件操作,可以使用FileOutputStream子类。在这个子类里面有如下构造方法:

创建/覆盖已有文件

public FileOutputStream(File file)
                 throws FileNotFoundException

文件内容追加:

public FileOutputStream(File file,
                boolean append)
                 throws FileNotFoundException

使用的最多的是创建或覆盖操作

范例:文件内容的输出

package TestDemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;



public class TestDemo{
    
    public static void main(String[] args) throws Exception{
        //1.定义要输出的文件目录
        File file=new File("e:"+File.separator+"demo"+File.separator+"my.txt");
        //1.此时由于目录不存在,那么文件不能输出,那么应该首先创建文件目录
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdir();//创建目录
        }
        //2.使用OutputStream和其子类进行对象的实例化,此时目录存在,文件还不存在
        OutputStream output=new FileOutputStream(file);
        //3.要进行文件内容的输出
        String str="Good study";
        byte data[]=str.getBytes();//将字符串变为字节数组
        output.write(data);//将内容输出

        //4.关闭资源操作
        output.close();
    }   

}

此时进行了文件内容的输出,并且发现,如果此时要输出的文件不存在,那么会自动进行创建


image.png

可是对于输出操作在OutputStream有三个方法

范例:采用单个字节的方式输出

    String str="Good study";
        byte data[]=str.getBytes();//将字符串变为字节数组
        // output.write(data);//将内容输出
        for (int i = 0; i < data.length; i++) {
            output.write(data[i]);
        }

范例:输出部分字节数组
第二个参数开始点,第三个参数,长度

        output.write(data,6,6);//将内容输出

但是每一次都是覆盖不是很好,我们希望内容追加,那么更换OutputStream的构造方法即可。

package TestDemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;



public class TestDemo{
    
    public static void main(String[] args) throws Exception{
        //1.定义要输出的文件目录
        File file=new File("e:"+File.separator+"demo"+File.separator+"my.txt");
        //1.此时由于目录不存在,那么文件不能输出,那么应该首先创建文件目录
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdir();//创建目录
        }
        //2.使用OutputStream和其子类进行对象的实例化,此时目录存在,文件还不存在
        OutputStream output=new FileOutputStream(file,true);
        //3.要进行文件内容的输出
        String str="Good study+\r\n";
        byte data[]=str.getBytes();//将字符串变为字节数组
        output.write(data);//将内容输出

        //4.关闭资源操作
        output.close();
    }   

}

只要是程序要输出内容,都可以利用OutputStream类完成。

相关文章

  • java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以

    字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamR...

  • Java中有几种类型的流?

    字节流和字符流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Write...

  • Java中常用的字节流和字符流

    IO流(输入流、输出流) 字节流、字符流 1.字节流: InputStream、OutputStream Inpu...

  • JAVA IO

    Java的I/O建立与流之上,包括字节流(InputStream/OutputStream)和字符流(Reader...

  • IO流简单概述

    字符流和字节流: 字节流两个基类:InputStream OutputStream 字符流两个基类:Reader ...

  • JAVA IO(一)体系

    分类: 基于传输的格式: 1.字节流: InputStream OutputStream2.字符流:Writer...

  • *字节流与字符流2(OutputStream)

    OutputStream类是专门进行字节输出的一个类,这个类的定义如下: 首先可以发现OutputStream类实...

  • IO 流

    流 流的分类 字节流 字符流 字节流 InputStream 是所有字节输入流的父类 OutputStream 是...

  • Java IO

    字符流和字节流: 字节流两个基类:InputStream OutputStream字符流两个基类:字符流在内部融合...

  • IO

    IO文件读写 输入流输出流字节流字节输入流 InputStream字节输出流 OutputStream字符流字符输...

网友评论

      本文标题:*字节流与字符流2(OutputStream)

      本文链接:https://www.haomeiwen.com/subject/jcbxsqtx.html