JAVAIO编程——流操作简介与字节输出流

前言:File类只是实现了对文件本身的操作,却无法实现对文件内容的操作

字节流与字符流

流:主要指数据的处理方式以及目标内容的处理机制,所有的流都分为输入流和输出流两种

  • 字节操作流:OutputStream(字节输出流)InputStream(字节输入流)
  • 字符操作流:Writer(字符输出流)Reader(字符输入流)
    在这里插入图片描述
    在这里插入图片描述

通用操作步骤

  • 通过File类设定要操作的文件路径(针对文件流而言)
  • 通过字节流或字符流的子类为父类进行对象实例化处理
  • 进行读、写的操作
  • 流属于宝贵资源,操作完成后必须进行关闭

OutPutStream

public abstract class OutputStream
extends Object
implements Closeable, Flushable
这个抽象类是表示字节输出流的所有类的超类。 输出流接收输出字节并将其发送到某个接收器。
需要定义OutputStream子类的应用OutputStream必须至少提供一个写入一个字节输出的方法。
public interface Closeable
extends AutoCloseable
A Closeable是可以关闭的数据的源或目的地。 调用close方法来释放对象持有的资源(如打开的文件)。
public interface AutoCloseable
可以保存资源的对象(如文件或套接字句柄),直到它关闭。 AutoCloseable对象的close()方法在退出已在资源规范头中声明对象的try -with-resources块时自动调用。 这种结构确保迅速释放,避免资源耗尽异常和可能发生的错误。
API Note:
实际上,基类实现自动关闭是可能的,实际上是可行的,尽管不是所有的子类或实例都将保存可释放的资源。 对于必须以完全一般性操作的代码,或者当知道AutoCloseable实例需要资源释放时,建议使用try资源结构。 然而,使用设施,例如当Stream同时支持I / O基和非I / O基的形式, try -with资源块是一般不必要使用非I / O基形式时。
public interface Flushable
A Flushable是可以刷新的数据的目的地。 调用flush方法将任何缓冲输出写入底层流。
说白了就是强制清空缓冲区的内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public class Test {
    public static void main(String[] args) throws IOException {
        //定义要进行输出的磁盘完成路径
        File file = new File("D:" + File.separator + "test-new.txt");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        //通过子类进行父抽象类的实例化
        OutputStream fileOutputStream = new FileOutputStream(file);
        //流输出
        fileOutputStream.write("lalalala德玛西亚".getBytes());
        //关闭流
        fileOutputStream.close();
    }
}

在这里插入图片描述
如果不希望覆盖内容而是追加,append设为true即可

public class Test {
    public static void main(String[] args) throws IOException {
        //定义要进行输出的磁盘完成路径
        File file = new File("D:" + File.separator + "test-new.txt");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        //通过子类进行父抽象类的实例化
        OutputStream fileOutputStream = new FileOutputStream(file,true);
        //流输出
        fileOutputStream.write("lalalala撸啊撸啊".getBytes());
        //关闭流
        fileOutputStream.close();
    }
}

在这里插入图片描述
如果只想实现部分输出可设置开始和步长

public class Test {
    public static void main(String[] args) throws IOException {
        //定义要进行输出的磁盘完成路径
        File file = new File("D:" + File.separator + "test-new.txt");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        //通过子类进行父抽象类的实例化
        OutputStream fileOutputStream = new FileOutputStream(file);
        //流输出
        fileOutputStream.write("lalalala撸啊撸啊".getBytes(),0,10);
        //关闭流
        fileOutputStream.close();
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值