1(2)IO流---字节流

一.分类

  • 字节流(不适用于文本)
  1. InputStream
  2. OutputStream
  • 字符流
  1. Reader
  2. Writer

 二.字节流

  1.概述

      InputStream

      字节输入流,是被读的,抽象类,不能创建对象

        FileInputStream:针对文件数据操作

        DataInputSream:转换流,可传基本数据类型

        BufferedInputStream:缓冲流,常用

        ObjectInputStream:对象流

   OutputStream

      字节输出流,是被写的,抽象类,不能创建对象

        PrintStream:单向的输出流

  2.字节流----文件流

   文件流FileInputStream,字节流不适合文本(原因是10个字节为单位读),但适合图片

//1.创建对象
FileInputStream fis = new FileInputStream("src/test.txt");

//2.读文件,一个字节一个字节读
int n=fis.read();
System.out.println((byte)n);
n = fis.read();
System.out.println((byte)n);
n = fis.read();
System.out.println((byte)n);

//3.读文件,一次读取多个字节
byte []by=new byte[1024];
int m=fis.read(by);//将读取的字节内容保存在buf数组 返回的是读取的字节数
System.out.println(m);

//4.是流,所以再次读取时读不到数据,返回-1
m=fis.read(by);
System.out.println(m);

//5.完整读取一个文本
byte []buf=new byte[10];//10个字节为单位读取。
int len=-1;
while((len=fis.read(buf))!=-1){
    String result =new String(buf,0,len);
    System.out.print(result);
}
fis.close();
View Code

      文件流的小练习:把图片复制到桌面

//1.找到源和目标位置
FileInputStream fis=new FileInputStream("图片原目录");
FileOutputStream fos=new FileOutputStream("桌面目录");

//2.读取文件媒介
byte []buf=new byte[1024];
int len=-1;

//3.读取并写入文件
while((len=fis.read(buf)) != -1) {
    fos.write(buf, 0, len);
}

//4.写入后重要的步骤
fos.flush();
fos.close();
fis.close();
View Code

   文件流的小练习2:写入东西到txt文件

//文件字节输出流,创建对象并写入txt文档
//1.创建对象,追加或者覆盖
FileOutputStream fos=new FileOutStream("src/test.txt",true);
FileOutputStream fos=new FileOutStream("src/test.txt");

//2.写入
fos.write(97);//写入a
fos.write("你好".getByte());//将字符串转化为字节数组

//3.收尾
fos.flush();
fos.close();
View Code

  3.字节流-----缓冲流

    具有缓冲区,减少对硬盘的读写次数,在这里首先接触到装饰者模式,以后还会遇到更多

  • 写入缓冲字节流
//1.创建缓冲输出流  装饰者模式 设计模式
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/buffer.txt"));
        
bos.write("你好,我这里使用了缓冲流进行写入内容!!".getBytes());
bos.flush();
bos.close();
View Code
  • 读取缓冲字节流
//2.创建缓冲输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src/buffer.txt"));
byte[] buf = new byte[1024];
int len = -1;
while((len=bis.read(buf)) != -1 ) {
    System.out.print(new String(buf, 0, len));
}
bis.close();
View Code

猜你喜欢

转载自www.cnblogs.com/anzhilanxiao/p/10589398.html