版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块七I/O流字节流任务二字节流在计算机中,无论是文本、图片,还是音频,它们在存储设备中都是由一系列字节组成的。Java中用于处理二进制数据,以字节为基本单位进行读取和写入操作的流称为字节流,本节将对字节流进行讲解。学习目标掌握InputStream的使用,能够使用InputStream读取文件
先定一个小目标!掌握OutputStream,能够使用OutputStream向文件中写入数据InputStreamInputStream是Java中所有字节输入流的父类,它提供了一系列方法来读取字节数据,其中常用的方法如下表所示。方法声明功能描述intread()从输入流读取一个字节,把它转换为0~255的整数,并返回这一整数intread(byte[]b)从输入流读取若干字节,把它们保存到参数b指定的字节数组中,返回值为读取到的字节数,如果已到达流的末尾,返回值将为-1intread(byte[]b,intoff,intlen)从输入流读取若干字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始索引,len表示读取的字节数目,返回值为读取到的字节数,如果已到达流的末尾,返回值将为-1voidclose()关闭此输入流并释放与该流关联的所有系统资源InputStream使用InputStream类的注意事项:InputStream是一个抽象类,需要通过实例化其子类的对象来使用字节输入流。FileInputStream是InputStream的一个子类,专门用于从文件中读取数据。FileInputStream的构造方法可以接收一个文件名或者一个File对象作为参数,通过这个参数可以指定要读取数据的文件。在创建FileInputStream对象时,如果文件不存在或者无法访问,会抛出FileNotFoundException异常。InputStream案例演示下面通过一个案例演示使用FileInputStream读取文件中的数据。首先在Java项目的src目录下创建一个名为file的包,在该包中创建一个文本文件test01.txt,在文件中输入内容“itheima”并保存。最后使用字节输入流对象来读取test01.text文件。Example07.java源代码InputStream案例演示案例的运行结果如下图所示。InputStream为了提高读取效率,可以使用一次能读取若干字节的read()方法。下面通过一个案例演示一次读取指定长度的数据的方式完成文件的读取。案例演示Example08.java源代码InputStream案例的运行结果如下图所示。案例演示InputStream脚下留心:中文乱码问题由于一个中文字符在UTF-8编码方案中占3个字节,在读取包含中文的文件时,采用一次读取一个字节或一次读取多个字节都可能因读取不到完整的字符而出现乱码问题。例如,将test01.txt中的内容改为“itheima程序员”,运行Example08,结果如下图所示。InputStream脚下留心:中文乱码问题为了避免中文乱码问题,需要调整每次读取的字节数以确保每个字符都能够被完整读取。此外,还可以使用InputStream类提供的readAllBytes()方法,一次性读取文件中的全部字节,并将其转化为字符串输出。例如,将文件Example08.java中的第7~13行代码,修改为如下代码。int[]arr; //声明一个int[]类型的变量arr=newint[3]; //为arr分配3个数组元素的空间InputStream脚下留心:中文乱码问题修改完成后再次运行,结果如下图所示。OutputStreamOutputStream是Java中所有字节输出流类的父类。OutputStream提供了一些基本的方法来写入字节数据,常用的方法如下表所示。方法声明功能描述voidwrite(intb)向输出流写入一个字节voidwrite(byte[]b)将字节数组b中的所有字节写到输出流voidwrite(byte[]b,intoff,intlen)将byte数组中从偏移量off开始的len个字节写入输出流voidflush()刷新输出流并强制写出所有缓冲的输出字节voidclose()关闭输出流并释放与此流相关的所有系统资源OutputStream使用OutputStream类的注意事项:与InputStream类类似,使用OutputStream类时必须先通过子类实例化对象。OutputStream类有多个子类,其中FileOutputStream子类是操作文件的字节输出流。FileOutputStream的构造方法可以接收一个文件名或者一个File对象作为参数,通过这个参数可以指定要写入数据的文件。在创建FileOutputStream对象时,如果文件不存在,则会创建一个新的文件;如果文件已经存在,如果没有指定其他参数,默认会覆盖原有的文件内容。OutputStream案例演示下面通过一个案例演示如何使用FileOutputStream将数据写入文件。Example09.java源代码OutputStream案例演示运行案例后,会在src\file目录中生成一个新的文本文件test02.txt,打开该文本文件查看文件中的内容,如下图所示。
OutputStream案例演示如果希望在已存在的文件内容之后追加新内容,则可使用FileOutputStream的构造方法FileOutputStream(Stringfilename,booleanappend)创建文件输出流对象,并把参数append的值设置为true。下面通过一个案例演示在已存在文件的内容后追加内容。Example10.java源代码OutputStream案例演示案例的运行结果如下图所示。【案例7-2】音频加密解密案例描述音频文件可以用来存储音乐、语音等。在某些情况下,需要对这些音频文件进行加密,以保护其中的内容不被未授权的人获取。例如,企业的商业机密文件或电话录音的音频文件,希望将其加密后传输。本案例要求编写一个模拟音频加密解密的程序,能够对音频文件进行加密和解密。具体要求如下:进入程序后会显示该程序的三个功能,分别是音频加密、音频解密和退出程序。要求原始音频文件、加密音频文件和解密音频文件分别存储在D:\audio目录下的三个文件夹中。【案例7-2】音频加密解密案例描述选择音频加密功能后,系统会显示原始音频文件目录中可以进行加密的所有文件名称。接着需要用户输入想要加密的文件名称(包括后缀名,本案例要求对mp3格式的音频进行加密),输入完成后对该文件进行加密(加密后的文件后缀仍为“.mp3”,但无法正常打开),完成后提示加密成功的信息和加密后文件的绝对路径。选择音频解密功能后,系统会显示所有已经加密过的音频文件名称。接着需要用户输入需要解密的文件名称,输入完成后对该文件进行解密,完成后提示解密成功和解密后文件的绝对路径。提示:案例要求既要加密又要解密。为了实现这一功能,可以使用异或操作进行加密,因为异或操作具有自反性,即对同一个数值进行两次异或操作得到的还是原值,这样可以简化解密操作。【案例7-2】音频加密解密案例效果任务小结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场吊灯施工方案(3篇)
- 小炒店营销方案(3篇)
- 儿童菜园活动方案策划(3篇)
- 安溪夜景施工方案(3篇)
- 打折面包活动方案策划(3篇)
- 星月灯施工方案(3篇)
- 校内生日活动策划方案(3篇)
- 火锅活动策划方案大全(3篇)
- 甜品活动推广方案策划(3篇)
- 砖墙厕所施工方案(3篇)
- T/CHTS 10149-2024公路缆索承重桥梁健康监测阈值技术指南
- DB32/T 3501-2019大规模教育考试网上评卷技术规范
- 收费站的应急预案
- 2025广西机场管理集团有限责任公司招聘136人(第一批次)笔试参考题库附带答案详解
- 2021年重庆市高等职业教育分类考试文化素质真题(中职类)
- 2025届成都二诊政治试卷
- 小学生编程机器人课件
- 洗煤厂工程施工组织设计方案
- 抵押物品的借款合同模板
- 体育组织信访管理工作流程与制度
- 价值型销售(技能篇)
评论
0/150
提交评论