字节流抽象类

文章详细介绍了Java中的字节流抽象类FileInputStream和OutputStream的基本用法,包括构造方法和常用方法如read()、write()以及close()。示例代码展示了如何从文件读取和写入字节,强调了不同read和write方法的使用场景。
摘要由CSDN通过智能技术生成

字节流抽象类

  • 字节流的父类(抽象类)
  1. InputStream
  • 字节输入流的所有类的超类。
  1. OutputStream
  • 这个抽象类是表示字节输出流的所有类的超类。 输出流接收输出字节并将其发送到某个接收器。

FileInputStream

构造方法

  • FileInputStream(File file)
    通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
  • FileInputStream(FileDescriptor fdObj)
    创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统中的现有连接到一个实际的文件。
  • FileInputStream(String name)
    通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

常用方法

read()

public int read()
功能:从输入流读取数据的下一个字节。若已经到达流的末尾,返回值是 -1 。

    public static void main(String[] args) throws IOException {
        System.out.println("----------单个字节读取-----------");
        FileInputStream filIn = new FileInputStream("D:\\JavaCode\\JavaSE\\zz.txt");//括号内为文件的地址
        int date = 0;
        while ((date = filIn.read())!= -1){ //若已经到达流的末尾,返回值是 -1 
            System.out.print((char) date);
        }
        filIn.close();
----------单个字节读取-----------
xyzabcdef
Process finished with exit code 0
read(byte[] b)

public int read(byte b[])
功能:从输入流读取一些字节数,并将它们存储到缓冲区 b 。

    public static void main(String[] args) throws IOException {
        System.out.println("----------一次性多个字节读取-----------");
        FileInputStream filIn = new FileInputStream("D:\\JavaCode\\JavaSE\\zz.txt");
        byte[] b = new byte[6]; //byte的长度为缓存区
        int count = filIn.read(b);   //返回值为读取长度
        System.out.println(new String (b)); //将 byte型数组b 转为 String型
        System.out.println("读取的长度为:"+count);
        int count2 = filIn.read(b);
        System.out.println(new String (b));
        System.out.println("读取的长度为:"+count2);
        filIn.close();
----------一次性多个字节读取-----------
xyzabc
读取的长度为:6
defabc
读取的长度为:3

Process finished with exit code 
  • 通过输出可以发现结果是覆盖的,我们可以在转String的时候仅输出有效的部分,上可修改为System.out.println(new String (b,0,count2));
read(byte[] b, int off, int len)

public int read(byte b[], int off, int len)
功能:从输入流在 off 位置开始读取最多 len字节的数据到一个字节数组。

    public static void main(String[] args) throws IOException {
        System.out.println("----------使用read(byte[] b, int off, int len) -----------");
        FileInputStream filIn = new FileInputStream("D:\\JavaCode\\JavaSE\\zz.txt");
        byte[] b = new byte[8];
        int count = filIn.read(b,2,3);
        System.out.println(new String(b)); //将 byte型数组b 转为 String型
        System.out.println("读取的长度为:"+count);
        filIn.close();
----------使用read(byte[] b, int off, int len) -----------
  xyz   
读取的长度为:3

Process finished with exit code 0

close()

public void close()
功能:关闭此输入流并释放与流相关联的任何系统资源。

FileOutputStream

构造方法

  • FileOutputStream(File file)
    以写入由指定的 File对象表示的文件。
  • FileOutputStream(File file, boolean append)
    以写入由指定的 File对象表示的文件。
  • FileOutputStream(FileDescriptor fdObj)
    以写入指定的文件描述符,表示与文件系统中实际文件的现有连接。
  • FileOutputStream(String name)
    以指定的名称写入文件。
  • FileOutputStream(String name, boolean append)
    以指定的名称写入文件 append默认false 即覆盖原文件 为true则在文件内容后追加

常用方法

write(int b)

public void write(int b)
功能:将指定的字节写入此文件输出流。

    public static void main(String[] args) throws Exception{
        FileOutputStream fil = new FileOutputStream("D:\\JavaCode\\JavaSE\\zzz.txt");//不存在则会创建
        int b = 97;
        fil.write(b);
        fil.close();
    }

查看zzz.txt内容

a
write(byte[] b) & write(byte[] b, int off, int len)

public void write(byte b[])
public void write(byte b[], int off, int len)
功能:将 b.length个字节从指定的字节数组写入此文件输出流。
从下标 off 开始写入 len 个数据写入此文件输出流。

    public static void main(String[] args) throws Exception{
        FileOutputStream fil = new FileOutputStream("D:\\JavaCode\\JavaSE\\zzz.txt");//不存在则会创建
        byte[] b = new byte[10];
        b[0] = 13; //ascll码表 13为CR 回车
        b[1] = 14;
        b[2] = 15;
        fil.write(b[1]);
        fil.write(b,0,3);
        fil.close();
    }

查看zzz.txt内容
在这里插入图片描述

其他常用的write() 例子
    public static void main(String[] args) throws Exception{
        FileOutputStream fil = new FileOutputStream("D:\\JavaCode\\JavaSE\\zzz.txt");//不存在则会创建
        fil.write("\r".getBytes());//写入换行 windows使用“\n”或者“\r” Linux "\n" Mac "\r"
        String str = "HelloWorld";
        fil.write(str.getBytes());
        fil.write("\n".getBytes());
        String str1 = "湖南长沙";
        fil.write(str1.getBytes());
        fil.close();
    }

在这里插入图片描述

close()

public void close()
功能:关闭此文件输出流并释放与此流相关联的任何系统资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值