Java-IO

作者: 森屿暖茶 | 来源:发表于2021-02-07 09:24 被阅读0次

IO:Java数据的 输入\输出

数据流:根据流向分为输入流(InputStream\Reader)和输出流(OutputStream\Writer);也可以根据操作的数据单元分为字符流(Reader\Writer)和字节流(Stream)。以适应不同的场景。

字节流(Stream):一般用来处理图像、视频、PPT、Word等类型的文件。

 InputStream:基于字节的输入操作,定义了所有输入流都具有的共同特征,是所有输入字节流的父类。(输入到内存)

 OutputStream:基于字节的输出操作,定义了所有输出流都具有的共同特征,是所有输出字节流的父类。(输出到文件等)

字符流(Reader\Writer):一般用于处理txt、文本数据等文本类型的文件

 Reader:基于字符的输入操作,是所有输入字符流的父类。

 Writer:基于字符的输出操作,是所有输出字符流的父类。

字符提供readline()方法能够一行一行读,字符只能一个字节一个字节读 ;且对中文有区别(英文占1个字节、中文最少占2个字节,中文占一个字符)

看上面的是不是晕了。

我们在在流的使用过程之中常常是嵌套处理的,这是一种装饰模式。

拿字节流来说:DataOutputStream就是装饰FileOutputStream,FileOutputStream就是装饰OutputStream.他们是一种继承修饰拓展的关系。如DataOutputStream是用于修饰流的类型属性,BufferedOutputStream是用于修饰流读取时采用一块一块读的方式(否则字节流读取时一个字节一个字节读取,非常消耗性能),FileOutputStream是用于把文件转换为字节流。这样理解就便于使用众多类型的装饰类。

ByteArray修饰:从字节数组(byte[])中进行以字节为单位的读取

Piped修饰:用于多线程的管道通信

File修饰:跟文件相关的比如从文件输入或者输出到文件。

Filter修饰:一个过渡的过滤类,没有实际作用,供其他类装饰(Data、Buffered等)。

Buffered修饰:内部会有一个缓存区,用来存放字节,每次都是将缓存区存满然后发送,让流一块一块的读取。而不再是一个一个的读取。优化性能和读取速度。

Data:用于修饰读取基本 Java 数据类型(把数据修饰为),可以为Boolean、Int、String、Char等一系列类型。

void flush() :刷新输出流,强制缓冲区中的输出字节被写出。

void close() :关闭输出流,释放和这个流相关的系统资源。

字节流

Buffered:BufferedReader 拥有readline()方法可以读一行的字符。

InputStreamReader:将字节流以字符流输入。

OutputStreamWrite: 将字节流以字符流输出。

void close() :关闭输出流,释放和这个流相关的系统资源。

RandomAccessFile(随机文件操作):一个独立的类,直接继承至Object.它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。在文件里移动用的seek(int dex ){可以将指针移动到某个位置开始读写},setLength(long len){给写入文件预留空间}。

构造方法:RandomAccessFile randomAccessFile = new RandomAccessFile(File file, String mode);

其中mode 的值可选 "r":可读 ;   "w" :可写;"rw":可读写;

应用场景:文件的多线程下载,多个线程对整个文件进行拆分,每个线程下载其中一部分数据流,最终拼接得到完整的文件。

相关文章

  • JAVA-IO(二)

    JAVA-IO(二) sschrodinger 2019/05/21 引用 Java se 1.8 api JAV...

  • Thinking in Java - Java-IO系统笔记

    title: Java-IO系统笔记date: 2017-04-03 11:14:30categories: Ja...

  • JAVA-IO(一)

    JAVA-IO(一) sschrodinger 2019/05/21 引用 聊聊同步、异步、阻塞与非阻塞 - 猿码...

  • JAVA-IO(三)

    JAVA-IO(三) sschrodinger 2019/05/22 引用 长着胡萝卜须的栗子博客 Java ni...

  • java-IO

    1、什么是IO流? 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为...

  • Java-IO

    IO:Java数据的 输入\输出 数据流:根据流向分为输入流(InputStream\Reader)和输出流(Ou...

  • Java-IO/NIO

    java.io包下包含输入流和输出流,每种流又分为字节流和字符流两类,字节流支持以byte(8位)为单位进行操作,...

  • Java-IO详解

    IO概览 字节流与字符流的区别字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用...

  • Java-IO流

    File类 File类是操作文件和文件目录的类,能新建、删除、重命名、文件和目录 但File类不能访问文件本身的内...

  • JAVA-IO流

    }

网友评论

      本文标题:Java-IO

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