已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
磨砺营 IT 教育版权所有 IOIO 流流 字节流字节流 1 1 IOIO 的实际应用场景及基本概念的实际应用场景及基本概念 IOIO 流的实际应用场景 流的实际应用场景 首先 IO 流的实际应用是十分广泛的 比如头像上传 视频下载等操作 其底层细节 的实现都离不开 IO 流 相信这些功能大家都体验过 下面我们将来学习如何采用 Java 程 序来编写 IO 流程序 IOIO 流的基本概念 流的基本概念 在正式编写 IO 流程序之前 有些关键的概念必须要正确掌握 下面我们来看都有哪些 概念 问题 1 IO 流是什么 IO 流是输入和输出的简写 Input Output 即输入输出流 问题 2 IO 流如何划分 按方向分按方向分 输入流 输出流 注意 这个输入和输出的方向是相对而言 而 Java 中是 站在程序的角度来看的 比如程序将内存中的数据写到文件中 那么这个时候 就是采用 输出流来实现的 因为站在程序的角度来说 就是输出的方向 可参考下图进行理解 按单位分按单位分 字节流 字符流 这个是按读取数据的方式来划分 以字节为单位读取就是采用字节流 以字符为单位 进行读取就是字符流 应用区分 读文本文件 字符流 图片 视频 二进制文件 字节流 磨砺营 IT 教育版权所有 按功能分按功能分 节点流 处理流 节点流就是最原始的流 而所谓的处理流就是在节点流的基础进行了一层加强 我们 后面会有案例进行说明 2 2 数据单位换算数据单位换算 计算机保存文件的最小单位是字节 1K 1024 字节 1M 1024K 1G 1024M 1T 1024G 1P 1024T 3 3 字节流字节流 字节流是最早出现的流 因为计算机保存文件的最小单位就是字节 所以我们将从字 节流开始入手来学习 IO 流 首先 IO 流有一个非常好的学习体系 就是大部分的流 API 都是成对出现的 API 为我们提供了两个字节流的基类 public abstract class InputStreamInputStream extends Object implements Closeable 此抽象类是表示字节输入流的所有类的超类 public abstract class OutputStreamOutputStream extends Object implements Closeable Flushable 此抽象类是表示输出字节流的所有类的超类 注意 很明显 这两个流都是抽象类 所以后面我们都是采用其子类来实现我们的功 能 下面我们采用 应用驱动学习 的方式来进行学习 磨砺营 IT 教育版权所有 4 4 应用驱动应用驱动 APIAPI 学习学习 字节流字节流 4 1 4 1 写内容到文件中写内容到文件中 1 对异常直接抛出 不处理的方式 2 采用标准处理异常的方式 3 实现对文件内容的追加 4 如果文件不存在 会出现什么情况 此处建议大家先自行查阅 API 进行实现 如果遇到问题 再参考下面的实现代码 不进行异常处理的代码如下 很明显 我们要写文件 先明确一点就是要采用输出流 publicpublic classclass OutputStreamTest publicpublic staticstatic voidvoid main String args throwsthrows IOException String info I love java I love china 创建一个文件输出流 指向了我们要写的文件 FileOutputStream fo newnew FileOutputStream io txt 通过 write 方法将内容写到文件中 fo write info getBytes 关闭资源 fo close 进行异常处理的代码 以上主要是为了方便把握到整个主流程 正常编写对于资源的关闭 需要放到 finally 中 publicpublic staticstatic voidvoid main String args String info I love java I love china 创建一个文件输出流 指向了我们要写的文件 FileOutputStream fo nullnull trytry fo newnew FileOutputStream io txt truetrue 通过 write 方法将内容写到文件中 fo write info getBytes catchcatch FileNotFoundException e 磨砺营 IT 教育版权所有 e printStackTrace catchcatch IOException e e printStackTrace finallyfinally 关闭资源 trytry ifif fo nullnull fo close catchcatch IOException e e printStackTrace 4 2 4 2 读取文件的内容读取文件的内容 5 采用逐个字节的读取方式 6 如果文件不存在 会出现什么情况 此处建议大家先自行查阅 API 进行实现 如果遇到问题 再参考下面的实现代码 不进行异常处理的代码如下 很明显 我们要写文件 先明确一点就是要采用输入流 时刻记住站在程序的角度来看方 向 publicpublic staticstatic voidvoid main String args throwsthrows IOException FileInputStream fi newnew FileInputStream io txt 循环 只要有内容 我就继续读 intint i fi read whilewhile i 1 System outout print charchar i i fi read fi close 磨砺营 IT 教育版权所有 4 3 4 3 完成文件的拷贝功能完成文件的拷贝功能 7 完成普通文本文件的拷贝 8 完成二进制文件的拷贝 a 图片 b 视频 很明显 拷贝功能就是把我们上面讲的读写功能结合起来就可以了 输入流负责读取源文 件的内容 输出流负责将输入流读到的数据写到目标文件中即可 参考代码如下 publicpublic staticstatic voidvoid main String args throwsthrows IOException 创建一个输入流读取源文件的内容 FileInputStream fi newnew FileInputStream io file exe 创建一个输出流将内容写到目标文件 FileOutputStream fo newnew FileOutputStream io file2 exe 循环 边读边写 intint i fi read whilewhile i 1 此处把原先打印到控制台 改写到文件中 System out print char i fo write i i fi read 关闭资源 请大家参考上述的 finally 关闭方式 fo close fi close 4 4 4 4 采用处理流优化文件的读写性能采用处理流优化文件的读写性能 9 读写大文件 例如视频文件 还是采用一个一个字节复制 效率极低 所以 API 为 我们提供了数组的读取功能 具备缓冲区的作用的流 也就是我们前面提到的处理流 磨砺营 IT 教育版权所有 10 采用字节缓冲区流 处理流 public class FilterInputStreamFilterInputStream extends InputStream FilterInputStream 包含其他一些输入流 它将这些流用作其基本数据源基本数据源 它可以直 接传输数据或提供一些额外的功能一些额外的功能 FilterInputStream 类本身只是简单地重写那些将所 有请求传递给所包含输入流的 InputStream 的所有方法 FilterInputStream 的子类可进 一步重写这些方法中的一些方法 并且还可以提供一些额外的方法和字段 public class BufferedInputStreamBufferedInputStream extends FilterInputStream BufferedInputStream 为另一个输入流添加一些功能 在创建 BufferedInputStream 时 会创建一个内部缓冲区数组 public class FilterOutputStreamFilterOutputStream extends OutputStream 此类是过滤输出流的所有类的超类 这些流位于已存在的输出流 基础 输出流 之上 它们将已存在的输出流作为其基本数据接收器 但可能直接传输数据或提供一些额外的功 能 public class BufferedOutputStreamBufferedOutputStream extends FilterOutputStream 该类实现缓冲的输出流 通过设置这种输出流 应用程序就可以将各个字节写入底层 输出流中 而不必针对每次字节写入调用底层系统 下面我们看实现的代码 publicpublic staticstatic voidvoid main String args throwsthrows IOException 采用处理流来分别加强输入输出流 BufferedInputStream bi newnew BufferedInputStream newnew FileInputStream io file exe 磨砺营 IT 教育版权所有 BufferedOutputStream bo newnew BufferedOutputStream newnew FileOutputStream io file2 exe 虽然看似程序是一样的写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于OBE理念的搜索引擎优化课程教学改革研究
- 石化企业环保培训
- 意识形态培训讲稿
- 小学语文人教部编版二年级上册课文311 葡萄沟表格教学设计
- 20 海洋和陆地 教学设计-2024-2025学年科学三年级上册青岛版
- 第6课 艺术之窗-在幻灯片中插入艺术字教学设计-2025-2026学年小学信息技术(信息科技)四年级下册清华大学版
- 第四节 西亚教学设计-2025-2026学年初中地理粤人版七年级下册-粤人版2012
- 第6节 网络礼仪与道德教学设计-2025-2026学年初中信息技术(信息科技)七年级下册北师大版
- 北师大版一年级下册美丽的田园教案设计
- 中国蟾酥锭行业市场前景预测及投资价值评估分析报告
- 产能分析表完整版本
- 中职婴幼儿托育人才培养方案
- 企业数据治理体系和应用场景案例
- 蔡司手术显微镜课件
- 抛光机使用说明书
- 教科版小学科学六年级上册《纸桥承重》课件
- VDA6.3-2016过程审核主要证据清单
- 车辆使用申请表
- 小学四年级数学上册促销问题
- 小儿肌性斜颈的康复治疗
- 镇村综治中心治安防控室工作台账(完整打印版)
评论
0/150
提交评论