浅学IO流

IO

Io流的概述

  1. 什么是io流?
    • 存储和读取数据的解决方案。i:input 输入,o:output输出。
  2. io流的作用?
    • 用来读写数据(本地文件,网络数据)
  3. io流按照流向可以分为哪两种?
    • 输入流,内存 <—— 文件,这个过程称为读取。
    • 输出流,内存 ——> 文件,这个过程称为写入。
  4. io流按照文件的操作类型可分为哪两种?
    • 字节流,可操作视频,音频,文本等所有文件。
    • 字符流,只能操作纯文本文件
      • 纯文本文件是指能用记事本打开并且内容能读懂的文件,如.txt .md.xml.lrc等

io流的体系

在这里插入图片描述

字节输出流

基本用法

  1. 创建字节输出流对象

    • 代码格式:

    • new FileOutputStream(String s);
      
      • 创建对象的形参可以是字符串来表示的文件路径,也可以是File对象表示的文件路径
      • 如果路径当中文件不存在则会新建一个文件,前提是要保证父级路径正确
      • 如果路径当中的文件存在,则会清空文件
  2. 写入数据

    • new FileOutputStream(String s).write(int i);
      
    • write当中表示数据的形参是整形的,但写出文件的内容是该整形数据所对应Ascii表的字符。

    • 写出数据的三种方式

      void write(int b)					//一次写入一个数据
      void write(byte[] b)				//一次写入一个byte数组的数据
      void write(byte[] b,int off,int len)//一次写入byte数组的部分数据,off表示起始位置的索引,len表示要输入数据的长度
      
  3. 释放资源

    • new FileOutputStream(String s).close()
      
    • 如果不释放资源,则该文件将一直被占用,其他进程无法对其进行操作。

换行和续写

  1. 换行要用到转义字符:\r\n
    • 在需要换行的操作之前先写出装有 \r\nbety[]
  2. 续写(文件存在时创建字节输出流不会清空文件)
    • new FileOutputStream(写出文件的路径,是否开启续写)
    • 在创建字节输出流对象时有两种构造函数的情况,一种时只有一个形参,一种是含有两个形参
    • 该文件是否开启续写,由创建对象时第二个形参决定
      • 参数为true,开启续写。
      • 参数为false,关闭续写。

字节输入流

基本用法

  1. 创建字节输入流对象

    • new FileInputStream("要读取数据文件的路径")
      
    • 如果该文件不存在则会报错。

  2. 读入数据

    • new FileInputStream("要读取数据文件的路径").read()
      
    • 执行一次read方法只会读取一个字节数据,返回的数据是读取的字节数据在ACSII表上对应的数据。

    • 如果读取文件时没有读取到数据则会返回-1.

  3. 释放资源

循环读取

  1. 利用读不到数据会返回-1做循环条件,去重复执行read()方法
  2. 切记要利用第三方变量将判断条件中读取到的数据存起来,莫要在方法体中再次读取。

文件拷贝

  1. 单字节拷贝

    • 思想:边读边取。在进行循环读取的时候读入一个字节就写出一个字节。
    • 缺点:因为是一个字节一个字节的读写所以效率特别慢。
  2. 多字节拷贝(重点)

    • 思想:创建一个Byte数组,将读取的一个数组相同大小的数据去写出到另一个文件。

    • int read(byte[])     //java重写了这个方法,可以一次读入一个Byte数组等长的数据,读入的数据会被存放在数组当中,当然其返回值就不是读入的数据了,而是读入数据的长度。
      
      
      byte[] bytes = new byte[8];					//创建的长度为8的数组
      int len;									//用来存储读取数据的长度
      while ((len = fis.read(bytes)) != -1) {
      	fos.write(bytes,0,len);					//为防止最后一次读入的数据没把数组占满,我们采用读长的数据就写多长的数据		
      	}									   
      
      
      
      
      
      

未更完。。。。。。。。。。。。。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值