美文网首页
IO Stream - 字节流

IO Stream - 字节流

作者: 七喜丶 | 来源:发表于2021-09-02 13:29 被阅读0次

字节流

  • IO流概述和分类

    IO流介绍
    1.IO:输入/输出(Input/Output)
    2.流:是一种抽象概念,是对数据传输的总称.也就是说数据在设备间的传输称为 流,流的本质是数据传输
    3.IO流就是用来处理设备间数据传输问题的.常见的应用: 文件复制; 文件上传; 文件下载

    IO流分类
    1.按照数据流向:输出流输入流
    2.按照数据类型:主要字节流字符流),扩展交换流对象流;....)

    IO流使用场景
    1.如果操作的是纯文本文件,优先使用字符流
    2.如果操作的是图片、视频、音频等二进制文件,优先使用字节流
    3.如果不确定文件类型,优先使用字节流.字节流是万能的流

  • 字节流写数据

    字节流抽象基类
    1.InputStream:这个抽象类是表示字节输入流的所有类的超类
    2.OutputStream:这个抽象类是表示字节输出流的所有类的超类
    3.子类名特点:子类名称都是以其父类名作为子类名的后缀

    字节输出流
    FileOutputStream(String name):创建文件输出流以指定的名称写入文件

    使用字节输出流写数据的步骤
    1.创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)
    2.调用字节输出流对象的写数据方法
    3.释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)

    代码演示

    public class FileOutputStreamDemo01 { public static void main(String[] args) throws IOException { 
      //创建字节输出流对象
       /* 注意点: 
      1.如果文件不存在,会帮我们创建 
      2.如果文件存在,会把文件清空 */
      //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
      FileOutputStream fos = new FileOutputStream("/Users/blue/Desktop/javase12/aaaa/b.txt");
      //void write(int b):将指定的字节写入此文件输出流
      fos.write(97);
      //void close():关闭此文件输出流并释放与此流相关联的任何系统资源。
      fos.close();
    }
    
  • 字节流写数据的三种方式

    方法名 说明
    void write(int b) 将指定的字节写入此文件输出流 一次写一个字节数据
    void write(byte[] b) 将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数 组数据
    void write(byte[] b, int off, int len) 将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据

代码演示

public class FileOutputStreamDemo02 { public static void main(String[] args) throws IOException { 
  //创建字节输出流对象
  //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
  FileOutputStream fos = new FileOutputStream("/Users/blue/Desktop/javase12/aaaa/b.txt");
  //void write(int b):将指定的字节写入此文件输出流
  fos.write(97);
  //void write(byte[] b):将指定的字节数组一字节一字节写入此文件输出流
  byte[] bt = {97, 98, 99};
  fos.write(bt);
  // void write(void write(byte[] b, int off, int len)
   fos.write(bt, 1, 2);
  //void close():关闭此文件输出流并释放与此流相关联的任何系统资源。
  fos.close();
}

字节流写数据如何实现换行
windows:\r\n
linux:\n
mac:\r

字节流写数据如何实现追加写入
1.public FileOutputStream(String name, boolean append)
2.创建文件输出流以指定的名称写入文件。如果第二个参数为true ,则字节将写入文件的末尾而不是开头
如下:

FileOutputStream fos = new FileOutputStream(文件路径, true);

  • 字节流读数据

    字节输入流
    FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件 系统中的路径名name命名

    字节输入流读取数据的步骤
    1.创建字节输入流对象
    2.调用字节输入流对象的读数据方法
    3.释放资源

代码演示

public class FileInputStreamDemo03 { public static void main(String[] args) throws IOException { 
  //创建字节输入流对象
  //FileInputStream(String name):创建文件输出流以指定的名称写入文件
  FileInputStream fis = new FileInputStream("/Users/blue/Desktop/javase12/aaaa/b.txt");
  int b;
  whilr ((b = fis.read( )) != -1) {
      System.out.print(" " + (char)b)
    }
  //void close():关闭此文件输入流并释放与此流相关联的任何系统资源。
  fis.close();
}

字节流读数据(一次读一个字节数组数据)
一次读一个字节数组的方法:
public int read(byte[] b):从输入流读取最多b.length个字节的数据 返回的是读入缓冲区的总字节数,也就是实际的读取字节个数

代码演示

public class FileInputStreamDemo04 { public static void main(String[] args) throws IOException { 
 //创建字节输入流对象
 FileInputStream fis = new FileInputStream("文件路径"); 
  byte[] bys = new byte[1024]; //1024及其整数倍
  int len; 
  //循环读取 
  while ((len=fis.read(bys))!=‐1) { 
    System.out.print(new String(bys,0,len)); 
  }
  //释放资源 
  fis.close(); 
}
  • 字节缓冲流

    字节缓冲流介绍
    1.BufferOutputStream:该类实现缓冲输出流.通过设置这样的输出流,应用程序可以向底层输出流写入字 节,而不必为写入的每个字节导致底层系统的调用 2.BufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组.当从流中读取或跳过字 节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节

    构造方法

    方法名 说明
    BufferedOutputStream(OutputStream out) 创建字节缓冲输出流对象
    BufferedInputStream(InputStream in) 创建字节缓冲输入流对象

    代码演示

    public class BufferStream { public static void main(String[] args) throws IOException { 
       //字节缓冲输出流:
        BufferedOutputStream(OutputStream out) BufferedOutputStream bos = 
        new BufferedOutputStream(new FileOutputStream("文件名")); 
        //写数据 
        bos.write("hello\r\n".getBytes()); 
        bos.write("world\r\n".getBytes()); 
        //释放资源 
        bos.close();
    
        //字节缓冲输入流:
        BufferedInputStream(InputStream in) BufferedInputStream bis = 
        new BufferedInputStream(new FileInputStream("文件路径"));
        //一个字节字节读取
        // int by; 
        // while ((by=bis.read())!=‐1) { 
        // System.out.print((char)by); 
        // }
        byte[] bys = new byte[1024];
    
        int len; 
        while ((len=bis.read(bys))!=‐1) { 
        System.out.print(new String(bys,0,len)); }
        //释放资源 
        bis.close();
    }
    

相关文章

  • IO Stream - 字节流

    字节流 IO流概述和分类IO流介绍1.IO:输入/输出(Input/Output)2.流:是一种抽象概念,是对数据...

  • nio与io

    io包是以字节流(stream)、字符流(reader/writer)来进行文件的同步读写。nio是以通道(cha...

  • 3. IO概述

    1. IO基本实现 1.1 字节流(stream) 个人理解: 以字节为单位对文件本身直接操作。主要接口: Inp...

  • 6.NIO基础补习

    NIOjava IO 的核心是流Stream。输入流和输出流字节流和字符流 读数据的逻辑: open a stre...

  • JDK8新特性之Stream流

    是什么是Stream流 java.util.stream.Stream Stream流和传统的IO流,它们都叫流,...

  • IO流简介

    io流的作用:读写设备上的数据,硬盘文件、内存、键盘、网络.... io流分类:输入流和输出流,字节流和字符流 字...

  • Linux_196_TCP三次握手

    TCP协议 TCP协议位于传输层,提供可靠的字节流服务(Byte Stream Service),指的是以字节流的...

  • Java 3: IO Stream

    IO Stream 核心方法 FileInputStreamFileOutputStream DataInputS...

  • 确保可靠性的 TCP 协议和三次握手

    按层次分,TCP 位于传输层,提供可靠的字节流服务。 所谓的字节流服务(Byte Stream Service)是...

  • UNIX网络编程_第1章_一个简单的时间获取程序

    客户端 1)socket函数创建一个网际(AF_INET)字节流(SOCK_STREAM)套接字,该函数返回一个小...

网友评论

      本文标题:IO Stream - 字节流

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