zoukankan      html  css  js  c++  java
  • IO流

    01.File

    创建文件 删除文件 修改文件 显示文件信息

    02.字节流 字节输入流:抽象类InputStream,实现类FileInputStream

    字节输入流操作步骤:

    A:创建字节输入流对象

    B:调用read()方法读取数据,并把数据显示在控制台

    C:释放资源

    03.字符流 Reader        Writer

    flush()和close()的区别:

    close()关闭流对象,但是先刷新一次缓冲区。关闭之后,流对象不可以继续再使用了。

    flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。

    BufferedWriter,newLine():根据系统来决定换行符

    BufferedReader,String readLine():一次读取一行数据

    04.缓冲流 字符流为了高效读写,也提供了对应的字符缓冲流。BufferedWriter:字符缓冲输出流,BufferedReader:字符缓冲输入流

    05.二进制流   DataInputStream     DataOutputStream

    06.序列化和反序列化    ObjectInputStream      ObjectOutputStream

    07.序列化

    序列化是将对象的状态写入到特定的流的过程

    反序列化则是从特定的流中获取数据重新构建对象的过程

    使用集合保存对象,可以将集合中的所有对象序列化

    一个类的对象要想序列化成功 该类必须实现 java.io.Serializable 对象。

     

    NIO

    NIO包含以下核心组件

    1.通道 2.缓冲区 3.选择

    Channel用于在字节缓冲区和位于通道另一侧的实体(通常是文件或者套接字)之间以便有效的进行数据传输

    Buffer  缓冲区

    存储的是相同数据类型的数据集

    本质是一个可以写入数据,并且从中读取数据的内存

    1. position:写入或者读取的数据的当前指针

    最大值:capacity-1

    1. limit:有多少数据可以写或者可以读

    write模式下,我们的limit和write模式下的position的值一致

    Position变成0!

    1. capacity:缓冲区的最大容量
    2. Java NIO和IO的主要区别

    IO

    NIO

    面向Stream

    面向Buffer

    阻塞IO

    非阻塞IO

    Selectors

    Channel通道

    01.基于缓冲区对数据进行读取或者是写入

    02.通道是双向的,流是单向的

    03,可以异步的读写

     

    常用的实现:

    01.FileChannel:从文件中读写数据

    02.DatagerarmChannel:通过UDP读写网络中的数据

    03.SocketChannel:通过TCP读写网络中的数据

    04.ServerSockectChannel:可以监听新来的TCP链接,每进来一个都会创建一个新的ServerSockectChannel

     

    内存映射:

      就是把文件映射到电脑中的内存中,通过操作内存从而达到操作文件的目的!

    内存中操作是最快的

     

    Java中读取文件的方式:

    01.RandomAccessFile   随机读取,速度最慢

    02.FileInputStReam      流的方式读取

    03.BuFferReader        缓存的方式读取

    04.MappedByteBuffer     内存映射,速度最快!

     

    内存映射的三种模式:MapMode

    01.READ_ONLY :对缓冲区的内存只读

    02.READ_WRITE :对缓冲的内容读写

    03.PRIVATE :只对缓冲的内容进行修改,不会影响到真实的文件

     

    通常适用于文件的读取!一般不会涉及到文件的写入

     

     

    文件锁:

    LileLock:基于FileChannel对文件提供锁的功能!

    共享锁:共享读的操作,只能有一个写操作,适合读取数据

    独占锁:读写不能同时,只能有一个读或者一个写!适合写数据!

     

    Lock():

    无参的默认是独占锁;

    有参的为共享锁

     

    tryLock();

    非阻塞

     

  • 相关阅读:
    SSM整合
    SpringMVC学习笔记
    Spring笔记
    Spring之AOP在XML中的配置方法
    Spring之AOP的注解配置
    Mybatis学习笔记
    css学习笔记
    DOM技术
    Javascript学习笔记
    Hive导出复杂数据到csv文件
  • 原文地址:https://www.cnblogs.com/fkx1/p/9293416.html
Copyright © 2011-2022 走看看