JavaIO知识简述
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知识简述相关推荐
- 今天开始学Convex Optimization:第2章 背景数学知识简述
文章目录 第2章 背景数学知识简述 2.1 数学分析和微积分基础 函数性质 集合Sets Norms 线性函数.仿射函数 函数的微分(导数) 2.2 线性代数基础 Matrix Subspaces 正 ...
- 《从Docker到Kubernetes》总结二:Docker相关知识简述
https://www.bilibili.com/video/av56101144 Docker配置文件.日志 Docker配置文件(Cent OS 7):/usr/lib/systemd/syste ...
- 长春理工大学c语言实验题库,长春理工大学首届趣味心理知识竞赛初赛题库.doc...
长春理工大学首届趣味心理知识竞赛初赛题库 长春理工大学首届趣味心理知识竞赛初赛题库 心理知识简述 1.心理学概念 心理学是研究人的心理活动及其发生.发展规律的科学.人的心理是以不同的形式能动地反映客观 ...
- 计算机与网络基础知识的问答
计算机系统偏软件部分的组成是什么 操作系统的简介 简述进程管理 简述存储管理 简述设备管理 简述文件管理 简述作业管理 简介网络操作系统 简述数据库系统基础知识 简述关系数据库的设计 简述分布式数据库 ...
- Nginx入门篇-基础知识与linux下安装操作
我们要深刻理解学习NG的原理与安装方法,要切合实际结合业务需求,应用场景进行灵活使用. 一.Nginx知识简述 Nginx是一个高性能的HTTP服务器和反向代理服务器,也是一个 IMAP/POP3/S ...
- 计算机基础知识简答题汇总,计算机基础(简答)
计算机基础知识 简述计算机的发展经历了那几个阶段? 人们根据计算机采用的主要元器件的不同,将电子计算机的发展分为四代: 第一代(1946年-1956年)为电子管计算机,也叫真空管计算机,其主要逻辑元件 ...
- 计算机基础知识英文论文,第1章 计算机基础知识 2.doc
第1章 计算机基础知识2 思考与练习2 上机实验3 第2章 Windows操作系统4 思考与练习4 上机实验6 第3章 Internet操作基础7 思考与练习7 上机实验8 第4章 Word文字处理软 ...
- Opencv——几何空间变换(仿射变换和投影变换)
几何空间变换 [1]几何变换(空间变换)简述 [2]变换矩阵知识简述 齐次坐标的概念 几何运算矩阵 [3]图像的仿射变换 1.平移变换 2.比例缩放 3.旋转 4.对称变换(不做展示) 1.关于X轴变 ...
- 机器学习基于skcilearn tensorflow电子书_Tensorflow机器学习模型的跨平台上线
本篇文章转载自博客园,作者: 刘建平Pinard 在用PMML实现机器学习模型的跨平台上线中,我们讨论了使用PMML文件来实现跨平台模型上线的方法,这个方法当然也适用于tensorflow生成的模型, ...
最新文章
- 低数值精度推理和训练
- python面向对象总结_python面向对象总结
- python写文件读文件-python(文件读写)
- DirectX 90 3D 外接体
- BUUCTF(pwn)starctf_2019_babyshell
- SQLserver删除某数据库中所有表 方法 二
- cocos2d-x初探学习笔记(13)--内存回收机制
- zoj 3761(并查集+搜索)
- SpaceX星舰飞船首次试飞成功着陆!但没想到还是爆炸了...
- glMatrixMode()函数
- android SQLite常用数据类型
- Java中具有相同属性的两个类互相赋值
- 【已解决】Maven更改本地默认仓库时遇到的问题。 No implementation for org.apache.maven.model.path.PathTranslator was bound
- Linux之安装虚拟机/虚拟操作系统[VisualBox]
- paip.python连接mysql最佳实践o4
- CSS中常用的选择器
- Python自动发送微信消息
- 美服lol服务器状态,LOL美服训练模式上线:炮塔可关闭 野区无限刷新
- 把Sublime添加到Mac右键菜单
- 中国石油大学《大学语文》第一阶段在线作业