美文网首页
IO流相关

IO流相关

作者: 黑眼圈是画上的 | 来源:发表于2018-01-13 17:04 被阅读0次

Java.IO 包中定义了多个流类型 (类和抽象类) 来实现输入\输出功能,
按数据流的方向不同可以分为输入和输出流
按处理数据单位不同可以分为字节流和字符流
按照功能的不同可以分为节点流和处理流

字节流 :完完全全按照二进制编码格式一个字节一个字节来读的。
输入流    InputStream         输出流 OutputStream

字符流是按照一个字符一个字符来读的,一个字符等于两个字节。    会将读取的字节数据根据当前使用的字符进行编译
字符流 = 字节流+解码。
输入流    Reader      输出流   Writer              

只考虑文件操作情况下:
读取操作是:input \ read 从硬盘(存储设备) 到 内存
写入操作是:output \ write 从内存 到 硬盘(存储设备)

节点流
节点流就相当于一根管道直接插到数据源上面,直接读数据源里面的数据,或者直接往数据源里面写入数据。
典型的节点流是文件流:文件的字节输入流(FileInputStream) 文件的字节输出流(FileOutputstream)
文件的字符输入流(FileReader),文件的字符输出流(FileWriter)

处理流
处理流是”连接“在已存在的流(节点流或者处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。

InputStream 输入流
继承自InputStream的都是用于向程序中输入数据,且数据的单位为字节(8 bit);
具体方法
//读取一个字节并以整数的形式返回
//如果返回-1 已到输入流的末尾
int read() throws IOException

    //读取一系列字节并存储到一个数组buffer
    //返回存储了读取的字节的byte数组, 如果返回-1 已到输入流的末尾
    int read (byte[] buffer)     throws IOException
    
    close 关闭流,释放资源
read方法是一个字节一个字节的读。
read(byte[] buffer)方法是读取是先把数据读取到byte数组buffer里面,然后处理里面的数据。

OutputStream 输出流
继承自OutputStream的都是用于向程序中输出数据,且数据的单位为字节(8 bit);
具体方法
//向输出流中写入一个字节,该字节数据为参数b的低八位
write(int b) throws IOException
//将一个字节类型的数组中的数据写入流
write(byte[]b) throws IOException
//将一个字节型的数组中的从指定位置开始的len个字节写入到输出流
write(byte[]b,int off,int len) throws IOException
//关闭释放内存资源
close(); throws IOException
//将输出流中缓冲的数据全部写出到目标文件
flush() throws IOException

Reader 流
和InputStream 一模一样,唯一的区别在于读取的数据单位不同。继承自Reader的流都是向程序中
输入数据,数据单位都是16bit
一个字符就是两个字节 这种一个字符一个字符读取的方式有它存在的必要性 比如中文在Unicode码中中文占两个
字节 ,如果使用字节流来读一次只能读半个字。使用字符流就可以避免这个问题。

//读取一个字符并以整数形式返回  如果返回-1 已到输入流的末尾
read()        返回int类型  抛IO异常

//读取一些字符并且储存到一个buffer数组中  
//返回实际读取的字符数 如果返回-1 已到输入流的末尾
read(char[] rea)  返回int类型  抛IO异常

//关闭流释放资源
close()   无返回值 抛IO异常

//跳过n个字符不读  返回实际跳过的字节数
skip(long n)   返回long类型  抛IO异常

Writer 流
//向输出流中写入一个数据
write(int c); 无返回值 抛IO异常

//将一个字符型的数组写入输出流
write(char[] c);    无返回值 抛IO异常

//将一个字符数组从指定位置开始(offset)的指定长度(length)个字符写入输出流
write(char[] ,intoffset, int length);    无返回值 抛IO异常

//将一个字符串中的字符写入到输出流
write(String string); 无返回值 抛IO异常

//将一个字符串从offset开始的length个字符写入到输出流
write(String string,int offset, int length)    无返回值 抛IO异常

//关闭流释放资源
close();

处理流
1、缓冲流,缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加一些方法。
缓冲流是指带有缓冲区的,缓冲区(Buffer)就是内存里面的一小块区域,读写时都把数据放到这块缓冲区域里面,减少io对于硬盘的访问次数。
先把数据放置到缓冲区上,等到缓冲区满了以后,再 一次把缓冲区里面的数据写入硬盘或者读取出来。

剩余内容整理中。。。

相关文章

  • IO流相关

    Java.IO 包中定义了多个流类型 (类和抽象类) 来实现输入\输出功能,按数据流的方向不同可以分为输入和输出流...

  • Java基础-io知识回顾

    Java拾遗系列- io知识 简介 io分类及相关实例3.总结 1.简介 2.io分类及相关应用 2.1 io流...

  • Java基础IO流相关

    递归调用内存溢出图 I/O流示意图 输入流中flush方法和close方法的区别 flush:刷新缓冲区,流对象可...

  • Java常用包的主要作用

    java.io io流相关操作java.nio 新io操作java.lang 核心功能包,线程,System,基本...

  • 输入输出流的应用

    什么是IO流?简单来说,就是用来处理设备之间的数据传输 Java对数据的操作是通过流的方式,操作流相关的类都在IO...

  • 一起聊聊JAVA的IO流

    什么是IO流?用来处理设备之间的数据传输 Java对数据的操作是通过流的方式,操作流相关的类都在IO包中 按流向分...

  • Java学习总结之Java IO系统(二)

    本文接着Java学习总结之Java IO系统(一),我们继续总结Java IO系统的相关知识。 字符流(Write...

  • java基础-day20-IO流和StringBuffer

    IO流和StringBuffer 1. IO流 1.1 IO流概述 1.2 IO流分类 1.3 文件操作输入输出字...

  • java文件操作总结

    RandomAccessFile 相关API的使用 writeInt()方法源码,每次写入一位 IO流(输入流,...

  • 2019-04-27

    IO流相关学习:https://www.jianshu.com/p/a6354fa4dbdfhttps://www...

网友评论

      本文标题:IO流相关

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