IO流01_字节输入输出流

IO流
    IO:Input/Out
    流:抽象的概念,表示数据传输
    IO流:硬盘和内存之间数据传输(设备和设备),上传,复制,剪切...

分类:
    流向:读input 写out
    数据类型:
        字符 字符输出 字符输入
        字节 字节输出 字节输入

如何选择使用字符还是字节:
    记事本打开,能看懂选择字符,看不懂选择字节
    字节是万能的(电脑底层就是字0、1)

字节输出流:
    抽象父类:OutPutStream
    FileOutPutStream(String name)
    使用步骤:
    1.创建对象(1.调用系统创建空文件2.创建字节输出流对象3.让对象指向文件)
    2.释放资源(关闭文件流并释放与此相关的资源)
    3.调用写数据的方法(writer())
注意:默认情况下文件无论是否存在都会创建空文件

    写的方法:
        write(int b)    将指定的字节写入文件,一次写一个字节
        write(byte[] b)    将指定的字节数组写入文件,一次写一个字节数组
        write(byte[] b,int off,int len)    将指定的字节数组,从偏移量off开始写入文件,一次写len个字节,一次写数组的一部分


    追加:
        FileOutPutStream(String name,boolean append)
        append的值默认为false,为true表示追加

    换行符:
        在文本文件中都是存在内容来表示换行符
        windsow中\r\n
        linux中\n
        mac中\r

字节输入流:
    抽象父类:InputStream
    FileInputStream(String name)
    使用步骤:
    1.创建对象(1.调用系统创建空文件2.创建字节输出流对象3.让对象指向文件)
    2.释放资源(关闭文件流并释放与此相关的资源)
    3.调用读数据的方法(read())  

字节缓冲流:避免了底层系统的多次调用
    BufferedOutputStream:该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。
    BufferedInputStream:创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次有多个字节。
    构造方法:
    BufferedOutputStream(OutputStream out)
    BufferedInputStream(InputStream input)
注意:
    字节缓冲流仅仅提供缓冲区,真正的读写数据还是依靠基本的字节流对象进行操作
    使用BufferedOutputStream调用writer不在是直接写入到文件,而是写入到缓冲区
    想要把数据写入到文件,有三种方式
                                1.flush
                                2.close
                                3.缓冲区满了自动刷新

编码和解码
    二进制和字母或字符之间的转换规则
    编码:
        byte[] getBytes():使用平台的默认字符编码集将String存储字节数组
        byte[] getBytes(String chareName):使用指定的编码集String存储字节数组
    解码:
        String(byte[] bytes):通过默认字符集解码指定的数组来构造新的String
        String(byte[] bytes,String chareName):通过指定字符集解码指定的数组来构造新的String

    注意:
        编码和解码一定要保证一直,不然会出现乱码问题
        常用编码集GBK和UTF-8
        GBK是把一个字符转换成2个字节
        UTF-8把一个字符转换成3个字节

  

    


    


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值