java复习第8天---8.1---IO流---字节流

java复习第8天---8.1---IO流---字节流

目录




内容

1、IO流概述

1.1、 词语解析

    • I:input 输入
  • O:output 输出
  • 流:数据(字节,字符)1字符=2个字节 1字节=8个二进制位

1.2、数据流

  • 图示1.2-1:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q3RvAzUS-1590641779714)(./images/stream.png)]
  • 解析:
    1. 数据流的流向,以程序(java)运行所在内存区为参照;从硬盘或者网络终端读入数据为输入;从内存把数据写入硬盘或者网络终端数据为输出
    2. java中流表示数据的意思

1.3、java中IO流框架

  • 图示1.3-1:在这里插入图片描述
  • 分类
    • 流向:输入流和输出流
    • 数据单位:字节流和字符流
    • 功能划分:文件流、缓存流、转换流、打印流等

1、字节流

  一切文件数据(文本、图片、音视频等)在存储时,都是以二进制形式保存,一个一个字节,传输时也是如此。所有,字节流可以传输任意文件数据。

1.1、OutputStream

  Outputstream为字节输出流的父类,把信息传输到指定位置,提供基本的功能方法:

修饰符返回值类型方法名参数列表描述
publicvoidclose关闭此输出流并释放与此流相关的系统资源
publicvoidflush刷新输出流并强制任何缓冲区字节写出
publicvoidwritebyte[] b把b.length字节从指定的字节数组写入此输出流
publicvoidwritebyte[] b, int off, int len把len字节从指定字节数组b的偏移量off处开始写入此输出流
public abstractvoidwriteint len将指定的字节写入此输出流

1.1.1、FileOutputStream

  FileOutputStream 文件输出流,用于数据写入文件当中。

  • 常用构造方法
参数类别描述
File file创建文件输出流到以写入File对象对应的文件中
File file, boolean append创建文件输出流以追加方式写入由指定的 File对象表示的文件
String name创建文件输出流以写入指定名称的文件
String name, boolean append创建文件输出流以追加方式写入指定名称的文件
  • 使用步骤

    1. 创建文件输出流对象,指定写入文件
    2. 调用write方法把数据写入文件
    3. 调用close方法关闭输出流释放相关的系统资源
  • 示例1.1.1-1:

      package io.FileOutputStream;
    
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class TestFileOutputStream1 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\a.txt";
    
      		FileOutputStream fos = new FileOutputStream(path);
      		int b = 97;
      		fos.write(b);
      		fos.close();
      	}
      }
      测试结果:自己测试
    
  • 示例1.1.1-2:写入多字节数据

      package io.FileOutputStream;
    
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class TestOutputStream2 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\a.txt";
    
      		FileOutputStream fos = new FileOutputStream(path);
      		String str = "欢迎入坑JAVA!";
      		fos.write(str.getBytes());
      		fos.close();
      	}
      }
      测试结果:自己测试
    
  • 1.1.1-3:向a.txt中换行追加内容

      package io.FileOutputStream;
    
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class TestOutputStream3 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\a.txt";
    
      		FileOutputStream fos = new FileOutputStream(path, true);
      		String str = "《JAVA从入门到放弃》";
      		fos.write("\r\n".getBytes());
      		fos.write(str.getBytes());
      		fos.close();
      	}
      }
      测试结果:自己测试
    
  • 总结:

    1. 构造方法中的文件如果存在,且append不指定,则新写入的内容覆盖原有内容
    2. 构造方法中的文件如果不存在,则新建以参数名为名字的文件名
    3. \r\n为windows中的回车和换行符

1.2、InputStream

  InputStream 为自己输入的父类,定义了字节输入流共同的基本功能方法:

修饰符返回值类型方法名参数列表描述
publicvoidclose关闭此输入流并释放与此输入流向关联的系统资源
public abstractintread从输入流中读取一个字节数据
publicintreadbyte[] b从输入流中读取b.length个字节的数据存入指定自己数组b中,返回实际读取的字节数

1.2.1、FileInputStream

  FileInputStream 文件输入流,用于从文件中读取数据。

  • 常用构造方法
参数列表描述
File file通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
String name通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
  • 示例1.2.1-1:读取a.txt中的内容并显示

      package io.inputstream.fileinputstream;
    
      import java.io.FileInputStream;
      import java.io.IOException;
    
    
      public class TestFileInputSteam1 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\b.txt";
      		FileInputStream fis = new FileInputStream(path);
    
      		byte[] b = new byte[1024];
      		int len;
      		while((len = fis.read(b)) != -1) {
      			for(byte x: b)
      			System.out.print((char)x);
      		}
    
      		fis.close();
      	}
      }
      测试结果:
      package io.inputstream.fileinputstream;
    
      import java.io.FileInputStream;
      import java.io.IOException;
    

1.3、 字节流文件复制

  • 需求:把a.txt文件内容复制到aa.txt,用字节流复制

  • 代码1.3-1:

      package io.ByteStream;
    
      import java.io.FileInputStream;
      import java.io.FileOutputStream;
      import java.io.IOException;
    
      public class FileCopy {
      	public static void main(String[] args) throws IOException {
      		String source = "f:\\test\\a.txt";
      		String dest = "f:\\test\\aa.txt";
    
      		fileCopy(source, dest);
      	}
    
      	public static void fileCopy(String source, String dest) throws IOException {
      		FileInputStream fis = new FileInputStream(source);
      		FileOutputStream fos = new FileOutputStream(dest);
    
      		byte[] b = new byte[1024];
      		int len;
    
      		while((len = fis.read(b)) != -1) {
      			fos.write(b, 0, len);
      		}
    
      		fis.close();
      		fos.close();
      	}
      }
      测试结果:
      a.txt
      	欢迎入坑JAVA!《JAVA从入门到放弃》
      	《JAVA从入门到放弃》
      aa.txt
      	欢迎入坑JAVA!《JAVA从入门到放弃》
      	《JAVA从入门到放弃》
    

后记

本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785

前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaog2zh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值