JavaIO知识简述

  • IO流简介
    • InputStream
    • OutputStream
    • Reader
    • Writer
    • 缓冲流

IO流简介

IO即input(输入)/output(输出),input就是将数据加载到计算机内存,output就是将数据加载到文件,数据库等设备中.
IO流主要包含

- 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

InputStream

抽象类,是所有字节输入流类的父类
其子类包括:

  • 常用方法

    • read():返回输入流中下一个字节的数据
      比如我在src目录下写一个a.txt文件,文件内容是鸡你太美
      因为read方法每一次读取一个字节然后指针移到下一个字节,当返回值为-1时表示读到文件末尾

      InputStream inputStream= null;try {inputStream = new FileInputStream("src\\a.txt");int read = 0;while((read=inputStream.read())!=-1){System.out.println(read);}} catch (IOException e) {e.printStackTrace();} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}

      返回值是

      233
      184

      因为UTF-8一个汉字占三个字节比如"鸡"用字节表示就是"233 184 161",而每次读取的是一个字 节所以不能将"鸡"展示出来

    • read(byte b[]):将输入流读取的字节存储到字节数组b中

      InputStream inputStream=new FileInputStream("src\\a.txt");byte[] b=new byte[20];int num=0;while((num=inputStream.read(b))!=-1){System.out.println(new String(b));}inputStream.close();
      

      返回结果为:“鸡你太美”

    • read(byte b[],int off,int len):在read(byte[] b)基础上增加了off(偏移量),len(最大字节数)

      返回结果:

      鸡你太

      源码:

    • skip(long n):忽略流中的n个字节,返回实际忽略的字节数
      skip(3)后执行上面的read(byte[] b)结果是"你太美"

OutputStream

抽象类,是所有字节输出流的父类

  • 常用方法
  • write(int b):将字节b写入到输出流
  • write(byte b[])将字节数组b写入输出流
  • write(byte[] b,int off,int len):在write(byte b[])增加off,len
  • flush(): 刷新输出流,并将资源释放
    这些方法作用与InputStream基本相同只是方向不同

Reader

  • 如果我们不知道编码格式将文本类型转换为字符类型就会出现乱码
  • JVM将字节转换为字符会消耗时间

一般像音频,图片之类的文件使用字节流,一些文本使用字符流

     Reader reader=new FileReader("src/a.txt");char[] cbuf=new char[3];int read = reader.read(cbuf);System.out.println(new String(cbuf));

鸡你太

  • 常用方法

    • read()从输入流读取一个字符
    • read(char[] cbuf)从输入流读取字符存储到cbuf
    • read(char[] cbuf,int off,int len)
    • skip(long n)

Writer

  • 常用方法
  • write(int c)
  • write(char[] cbuf)
  • write(char[] cbuf,int off,int len)
  • append(char c)
  • flush()
     Writer writer=new FileWriter("src/a.txt");writer.write("sdasd");writer.append("12");writer.close();

源文件内容是"鸡你太美"
现在是sdasd12
write写入会覆盖原内容,append是在后面追加

缓冲流

因为IO操作效率低且消耗性能,在IO流上添加适配器,将数据加载到缓冲区,避免频繁的IO操作,提高运输效率
他们的构造方法参数为对应的抽象类的子类

JavaIO知识简述相关推荐

  1. 今天开始学Convex Optimization:第2章 背景数学知识简述

    文章目录 第2章 背景数学知识简述 2.1 数学分析和微积分基础 函数性质 集合Sets Norms 线性函数.仿射函数 函数的微分(导数) 2.2 线性代数基础 Matrix Subspaces 正 ...

  2. 《从Docker到Kubernetes》总结二:Docker相关知识简述

    https://www.bilibili.com/video/av56101144 Docker配置文件.日志 Docker配置文件(Cent OS 7):/usr/lib/systemd/syste ...

  3. 长春理工大学c语言实验题库,长春理工大学首届趣味心理知识竞赛初赛题库.doc...

    长春理工大学首届趣味心理知识竞赛初赛题库 长春理工大学首届趣味心理知识竞赛初赛题库 心理知识简述 1.心理学概念 心理学是研究人的心理活动及其发生.发展规律的科学.人的心理是以不同的形式能动地反映客观 ...

  4. 计算机与网络基础知识的问答

    计算机系统偏软件部分的组成是什么 操作系统的简介 简述进程管理 简述存储管理 简述设备管理 简述文件管理 简述作业管理 简介网络操作系统 简述数据库系统基础知识 简述关系数据库的设计 简述分布式数据库 ...

  5. Nginx入门篇-基础知识与linux下安装操作

    我们要深刻理解学习NG的原理与安装方法,要切合实际结合业务需求,应用场景进行灵活使用. 一.Nginx知识简述 Nginx是一个高性能的HTTP服务器和反向代理服务器,也是一个 IMAP/POP3/S ...

  6. 计算机基础知识简答题汇总,计算机基础(简答)

    计算机基础知识 简述计算机的发展经历了那几个阶段? 人们根据计算机采用的主要元器件的不同,将电子计算机的发展分为四代: 第一代(1946年-1956年)为电子管计算机,也叫真空管计算机,其主要逻辑元件 ...

  7. 计算机基础知识英文论文,第1章 计算机基础知识 2.doc

    第1章 计算机基础知识2 思考与练习2 上机实验3 第2章 Windows操作系统4 思考与练习4 上机实验6 第3章 Internet操作基础7 思考与练习7 上机实验8 第4章 Word文字处理软 ...

  8. Opencv——几何空间变换(仿射变换和投影变换)

    几何空间变换 [1]几何变换(空间变换)简述 [2]变换矩阵知识简述 齐次坐标的概念 几何运算矩阵 [3]图像的仿射变换 1.平移变换 2.比例缩放 3.旋转 4.对称变换(不做展示) 1.关于X轴变 ...

  9. 机器学习基于skcilearn tensorflow电子书_Tensorflow机器学习模型的跨平台上线

    本篇文章转载自博客园,作者: 刘建平Pinard 在用PMML实现机器学习模型的跨平台上线中,我们讨论了使用PMML文件来实现跨平台模型上线的方法,这个方法当然也适用于tensorflow生成的模型, ...

最新文章

  1. 低数值精度推理和训练
  2. python面向对象总结_python面向对象总结
  3. python写文件读文件-python(文件读写)
  4. DirectX 90 3D 外接体
  5. BUUCTF(pwn)starctf_2019_babyshell
  6. SQLserver删除某数据库中所有表 方法 二
  7. cocos2d-x初探学习笔记(13)--内存回收机制
  8. zoj 3761(并查集+搜索)
  9. SpaceX星舰飞船首次试飞成功着陆!但没想到还是爆炸了...
  10. glMatrixMode()函数
  11. android SQLite常用数据类型
  12. Java中具有相同属性的两个类互相赋值
  13. 【已解决】Maven更改本地默认仓库时遇到的问题。 No implementation for org.apache.maven.model.path.PathTranslator was bound
  14. Linux之安装虚拟机/虚拟操作系统[VisualBox]
  15. paip.python连接mysql最佳实践o4
  16. CSS中常用的选择器
  17. Python自动发送微信消息
  18. 美服lol服务器状态,LOL美服训练模式上线:炮塔可关闭 野区无限刷新
  19. 把Sublime添加到Mac右键菜单
  20. 中国石油大学《大学语文》第一阶段在线作业

热门文章

  1. 设计师必备的PPT辅助神器-iSlide
  2. 技能终将过时,而能力与时俱进
  3. 中文地址的英文翻译方法
  4. 易智瑞地理信息系统桌面软件10.7安装及单机版许可授权操作手册
  5. 中国首届微博开发者大会杨卫华演讲
  6. java频繁的读写文件_大量较为频繁读写的文件一般如何进行存储?
  7. 通信的数学理论_《香农传》告诉你为什么要学好数学
  8. 了解Windows 10中的新开始菜单
  9. 40、100 个网络基础知识普及
  10. 你真的了解白帽、黑帽、灰帽 吗?看看这个你就懂了