首页 > 编程语言 >Java学习io流总结

Java学习io流总结

时间:2023-08-22 20:44:26浏览次数:44  
标签:总结 字符 Java 字节 输出 int void io 输入

一、IO的分类

  1. 按照流向分
    • 输入流 Input
    • 输出流 Output
  2. 按照传输数据的类型来分
    • 字节流
      • 字节输入: InputStream
      • 字节输出: OutputStream
    • 字符流
      • 字符输入流:Reader
      • 字符输出流:Writer
  3. 按照流连接的目标来分
    • 节点流:低级流 --> 程序(内存)直接连接源文件
    • 包装流:高级流--> 连接其他流的流

二、常用方法

  1. 字节流
    • 字节输入: InputStream
      • int read() : 读取一个字节
      • int read(byte[] b) : 读取一个字节数组
      • int read(byte[] b, int off,int len) 读取一个指定的Byte数组的指定长度
      • void close() 关流
    • 字节输出: OutputStream
      • void write(int b) 写出一个字节
      • void write(byte[] b) 写出一个字节数组
      • void write(byte[] b, int off,int len) 写出一个指定的Byte数组的指定长度
      • void flush() 冲刷管道
      • void close() 关流
  2. 字符流
    • 字符输入流:Reader
      • int read() 读取一个字符
      • int read(char[] cbuf) 读取一个字符数组
      • int read(char[] cbuf, int off, int len) 读取指定数组的某一部分
      • void close() 关流
    • 字符输出流:Writer
      • void write(String str) 写出字符串
      • void write(String str, int off, int len) 写出字符串中的一部分
      • void write(int c) 写出一个字符
      • void flush() 冲刷管道
      • void close() 关流

三、常用的流

  1. 字节流
    • 字节输入: InputStream
      • FileInputStream 文件字节输入流 -------------------------节点流
      • BufferedInputStream 缓冲字节输入流------------------包装流
      • ObjectInputStream 对象输入流: 对象反序列化 -------包装流
        • 特有的方法 readObject()
    • 字节输出: OutputStream
      • FileOutputStream 文件字节输出流--------------------节点流
      • BufferedOutputStream 缓冲字节输出流----------包装流
      • ObjectOutputStream 对象输出流: 对象序列化----包装流
        • 特有的方法:writeObject()
        • 序列化的对象对应的类必须实现序列化接口Serializable
  2. 字符流
    • 字符输入流:Reader
      • FileReader 文件字符输入流 -----------------节点流
      • BufferedReader 缓冲字符输入流---------包装流
        • 特有方法: readLine() 读取整行
      • InputStreamReader 字符转换输入流------包装流
    • 字符输出流:Writer
      • FileWriter 文件字符输出流---------------节点流
      • BufferedWriter 缓冲字符出流-----------包装流
      • OutputStreamWriter 字符转换输出流-----包装流
      • PrintWriter 打印流
        • println() 写出内容

四、字节流和字符流总结

  1. 凡是类名的结尾是OutputStream 那么该流就是字节输出流
  2. 凡是类名的结尾是InputStream 那马该流就是字节输入流
  3. 凡是类名的结尾是Writer 那么该流就是字符输出流
  4. 凡是类名的结尾是Reader 那么该流就是字符输入流
  5. 创建流的时候,调用的构造函数如果需要传入另外一条流,那么这条流就一定是包装流
  6. 创建流的时候,调用的构造函数如果传入的是数据节点(文件,内存,网络)那么这条流一定是条节点流

五、字节流和字符流的对比

  1. 字节流比字符流更加的通用,因为无论什么文件,都是按照字节存储的
  2. 字符流只能用于读写纯文件类型的文件,字符流读写非文本类型的文件会造成文件的存储格式被破坏
  3. 对于文本文件而言,可以用字节流读写,也可以用字符流读写,但是建议使用字符流读写,因为字符流读写的话效率更高,

标签:总结,字符,Java,字节,输出,int,void,io,输入
From: https://www.cnblogs.com/swz20020720/p/17649643.html

相关文章

  • use @azure/arm-monitor sdk 遇见 ManagedIdentityCredential authentication failed.
    问题描述在使用@azure/arm-monitorsdk创建MonitorClient对象时候,遇见错误 ManagedIdentityCredentialauthenticationfailed.(statuscode500)CredentialUnavailableError:ERROR:AADSTS500011:Theresourceprincipalnamehttps://management.azure.comwasnotfoundi......
  • flask路由、模板、请求响应、session
    目录一路由系统1.1flask路由系统的参数1.2转换器(了解)1.3路由系统本质-->读源码1.4endpoint1.5flask写接口api二CBV2.2as_view源码三模板四请求响应五session一路由系统#1flask路由系统是基于装饰器的:参数如下#2转换器:#3路由系统本质#4endpoint不传会......
  • 通过一个实际的 Fiori Elements 扩展开发需求,介绍什么是 SAP Fiori Extension API 试
    本教程前一篇文章,介绍了如何在SAPFioriElementsListReport应用的Table区域里创建自定义Action,并且在该Action对应按钮的点击事件处理函数里,使用JavaScript代码打印出当前选中的表格行项目的业务数据。效果如下图所示:前一篇教程的解决方案,根据按钮的press事件点......
  • SAP Fiori Tools Application Modeler Page Map 标题的数据源
    按照笔者下面这篇教程的文章,安装了SAPFioriTools之后:SAPFioriElements开发教程-从入门到精通1.SAPFioriElements开发环境的搭建和开发准备工作我们就可以在VisualStudioCode的命令行里,使用PageMap,以一个图形化的界面,显示FioriElements应用的结构了:图......
  • 【Azure Developer】use @azure/arm-monitor sdk 遇见 ManagedIdentityCredential aut
    问题描述在使用@azure/arm-monitorsdk创建MonitorClient对象时候,遇见错误 ManagedIdentityCredentialauthenticationfailed.(statuscode500)CredentialUnavailableError:ERROR:AADSTS500011:Theresourceprincipalnamehttps://management.azure.comwasnotfoun......
  • 什么是 SAP CDS view 中的 Exposed Association with filter 技术
    在SAPS/4HANA中,CDS(CoreDataServices)是一种强大的数据建模和查询语言,而“ExposedAssociationwithfilter”是其功能之一。下图是一个具体的例子。这里我们使用_bookings[class='C']的语法来给association指定一个过滤条件,然后暴露成_business_flights给外部消费者......
  • SAP Fiori Elements List Report 如何在扩展开发里使用代码获得当前选中的表格行项目
    笔者从2007年电子科技大学计算机专业硕士毕业后加入SAP成都研究院,一直从事SAP产品设计和研发工作至今,对SAP多项技术有着深入透彻的研究,尤其精通ABAP编程,SAPUI5(Fiori)应用开发和SAPOData服务开发。笔者将自己在SAP领域16年(2007~2023)的技术沉淀,进行了系统的归......
  • java 如何根据经纬度查询出一千米内的资源数据
    使用地理信息系统(GIS)的相关技术和算法来实现根据经纬度查询一定范围内的资源数据。以下是一种基本的实现思路:获取资源数据:首先,您需要有一组资源数据,每个数据都包含了对应资源的经纬度信息。计算距离:使用距离计算公式(如haversine公式)来计算两个坐标点之间的距离。这可以......
  • java经典50道编程题(很好练逻辑思维的题)
    【程序21】题目:求1+2!+3!+…+20!的和程序分析:此程序只是把累加变成了累乘。1、先求该项阶乘的值*2、累加求求publicclassProgramme21{publicstaticvoidmain(String[]args){intsum=0;//总和for(inti=1;i<=20;i++){sum+=factorial(i);//累加}System.out......
  • 如何使用 Guided Development 给 Fiori Elements List Report 的工具栏添加自定义按钮
    本教程之前的步骤,我们介绍了如何使用SAPFioriTools这个扩展包的ApplicationModeler提供的PageMap来给ListReport的Table控件添加自定义列的步骤。本文介绍另一种在FioriElements应用里进行扩展开发的方式,即FioriElementsGuidedDevelopment工具向导。按照......