首页 > 其他分享 >IO流 续 处理流

IO流 续 处理流

时间:2023-03-06 19:23:38浏览次数:28  
标签:属性 NIO 处理 xxx IO 序列化 String

处理流

缓冲流

  作用:增加缓冲区,提供效率

  类型

    BufferedInputStream

      包装InputStream

      例如:FileInputStream、DataInputStream、ObjectInputStream等

    BufferedOutputStream

      包装OutputStream

      例如:FileOutputStream、DataOutputStream、ObjectOutputStream等

    BufferedReader

      包装Reader  例如:FileReader、InputStreamReader等

      String readLine()  判断是否读完,使用 ==null

    BufferedWriter

      包装Writer  例如:FileWriter,OutputStreamWriter等

      write(String) + newLine()

    缓冲区的大小

      字节流  8192字节

      字符流  8192字符

数据流

  作用:可以处理Java的基本数据类型+字符串(UTF-8修改版)

  类型

    DataOutputStream

      writeXxx()   

        writeInt(int)

        writeDouble(double)

        writeChar(char)

        writeUTF(String)

    DataInputStream

      readXxx()

        int readInt()

        double readDouble()

        char readChar()

        String readUTF()

  注意

    (1)DataOutputStream写,用DataInputStream读取

    (2)写的顺序和读的顺序要一致  写与读之间需要配置文件等形式进行沟通顺序和类型

对象流

  作用:可以处理Java对象等

  类型

    ObjectOutputStream

      writeObject(Object)

      对象序列化

    ObjectInputStream

      Object  readObject()

      对象反序列化

  注意

    (1)凡是要序列化的对象,它的类型必须实现java.io.Serializable接口

      否则会报:NotSerializableExecption

    (2)如果属性涉及到其他的引用数据类型,那么这个类型也必须实现java.io.Serializable接口

    (3)如果某个属性不想要序列化,那么可以在属性之前加transient

      一旦加了这个关键字修饰,该属性的值会在序列化的过程中,被忽略

      一旦加了这个关键字修饰,该属性在反序列化的过程中,它的值就赋默认值

    (4)在实现java.io.Serializable接口时,最好加一个常量:序列化版本ID

      private static final long serialVersionUID = 1L;

    (5)静态的属性不能序列化

打印流

  作用:可以打印各种类型的数据,最终都是以字符的形式打印,如果是引用数据类型,就调用它的toString()

  类型

    PrintStream

      代表  System.out

      方法  print(xxx)  println(xxx)

    PrintWriter

      方法  print(xxx)  println(xxx)

NIO(了解)

Non - Blocking IO  非阻塞式IO

NIO和IO的区别

  区别一

    IO是面向流,是单向的,从某个流中要么只能读,要么只能写

    NIO是面向通道+缓冲区,即可以是单向的,又可以是双向的

  区别二

    IO是阻塞式的,一旦某个线程在读,此时没有可读的数据,会一直等待

    NIO是非阻塞式

  区别三

    NIO可以使用选择器

标签:属性,NIO,处理,xxx,IO,序列化,String
From: https://www.cnblogs.com/woniupa/p/17185052.html

相关文章

  • 【Android Studio】通过编辑setting.gradle文件,添加阿里仓库
    本人对AndroidStudio的了解非常初级,这篇blog主要是自用备忘性质。因为众所周知的原因,国外仓库访问很不方便,影响项目构建。所以需要添加国内仓库,而阿里云仓库属于比较知名......
  • FLAG && Question
    对软件工程课程:希望我能学到点东西吧个人目标:好好学习,以后找到工作。 “软件工程是不是教会不怎么会写程序的人开发软件?”我认为是的,软件的开发不止是写代码。软件的......
  • ENGG1310 P2.2 Data, Logic Gates & Binary Computation
    课程内容笔记,自用,不涉及任何assignment,exam答案Notesforself-use,donotincludeanyassignmentsorexamsDataRepresentations这里可以和前面介绍的数字信号/......
  • EME04 Software effort estimation
    SoftwareeffortestimationintroductionDelayestimationuntillateintheprojectBaseestimatesonsimilarprojectsthathavealreadybeencompletedUs......
  • 吴恩达学习笔记6(logistic regression)
    2023-03-0616:54:15星期一接下来讨论y是离散值情况下的分类问题分类问题举例此时y是有两个取值的变量:0or10表示负类:没有某个东西1表示正类:有某个东西开发一......
  • 【APIO2014】Beads and wires
    观察其实就是每个节点可以作为蓝线的中点一次,然后求蓝线的最大权值和。考虑如果是有根的话,可能是son[x]-x-fa[x]这种结构,也可能是son[x]-x-son[x]。应该可以用一个dp[i][0/......
  • cmd中执行cl命令,提示'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件
    前提:已经安装vs系列软件我们可以在命令行直接编译c++程序在windows操作系统中,打开命令行,输入cl,若系统提示'cl'不是内部或外部命令,也不是可运行的程序或批处理文件。则......
  • 【MRTK】解决 Unity.IL2CPP.Building.BuilderFailedException: Lump_libil2cpp_vm.cpp
    前言最近在部署HoloLens应用的时候遇到了这个报错,无论是本地部署、远程部署、还是导出APPX项目包,都会遇到这个问题从而导致生成错误我在中文平台搜索没有找到答案,于......
  • cookie和session的区别
     会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服......
  • python处理两个表中,筛选具有相同列值的数据
    1importopenpyxl2importpandasaspd3importos456#导入文件夹的所有文件7defget_files_name():8"""9用于获取文件名......