




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第8章文件和输入输出流 本章主要内容 8 1输入 输出流8 1 1流的概念8 1 2io类库8 2文件处理8 2 1文件与目录管理8 2 2文件流8 3随机存取文件和本地可执行文件8 3 1随机存取文件流8 3 2本地可执行文件8 4数据流与对象流8 4 1数据流8 4 2对象流8 5Java多媒体技术8 5 1应用输入流播放音频文件8 5 2Java多媒体包JMF的应用 文件 程序 终端 文件 程序 网络端点 数据流 起点 终点 网络端点 文件 字符串存储区 8 1输入 输出流 什么是数据流 流是可被顺序访问的无限长的字符序列 8 1 1流的概念 4 8 1 2io类库 I O流 字节流 字符流 5 8 1 2io类库 1 字节流的层次结构 6 8 1 2io类库 2 字符流的层次结构 7 8 1 2io类库 2 字符流的层次结构 8 8 2文件处理 1 File类2 字符文件 FileReader类 FileWriter类3 字节文件 FileInput类 FileOutput类 定义在包java io中 9 8 2 1文件与目录管理 1 创建File类文件对象 1 所有对文件的操作都要使用File类 2 其构造 File 文件名 File 文件所在目录 文件名 文件与应用程序不在同一目录 文件与应用程序在同一目录 10 8 2 1文件与目录管理 2 获取文件及目录属性 1 判断文件或目录是否存在publicbooleanexists 2 判断是文件还是目录publicbooleanisFile publicbooleanisDirectory 3 获取文件或目录名称与路径publicStringgetName 返回文件名或目录名 publicStringgetPath 返回文件或目录的路径 11 8 2 1文件与目录管理 4 获取文件的长度publiclonglength 5 获取文件读写属性publicbooleancanRead publicbooleancanWrite 6 列出目录中的文件publicString list 7 比较两个文件或目录publicbooleanequals Filef 12 8 2 1文件与目录管理 3 文件及目录操作File类中还定义了一些对文件或目录进行管理 操作的方法 常用的方法有 1 重命名文件publicbooleanrenameTo FilenewFile 2 删除文件publicvoiddelete 3 创建目录publicbooleanmkdir 13 8 2 2文件流 对文件进行输入输出处理的四个类 FileInputStream 字节文件输入流 FileOutputStream 字节文件输出流 FileReader 字符文件输入流 FileWriter 字符文件输出流 14 8 2 2文件流 1 字节文件输入流读取文件 1 FileInputStream类FileInputStream Stringfilename FileInputStream Filefile FileInputStream FileDescriptorfdObj 2 从文件输入流中读取字节intread intread byteb intread byteb intoff intlen 15 例8 1 在下面的程序中 读取一个文本文件test dat 并将其显示到对话框上 在编写程序之前 我们至少需要知道两件事 1 怎样把一个流与一个文件联系起来 2 用什么方法把从文件中读取到的数据显示到一个对话框中 16 8 2 2文件流 2 字节文件输出流写入文件 1 FileOutputStream类FileOutputStream Stringfilename FileOutputStream Filefile FileOutputStream FileDescriptorfdObj 2 把字节发送到文件输出流write intb write byte b write byte b intoff intlen 17 例8 2 复制图像文件a jpg 并且更名为b jpg 18 8 2 2文件流 3 字符文件流读写文本文件 1 FileReader和FileWriterFileReader Stringfilename FileReader Filefile FileReader FileDescriptorfdObj FileWriter Stringfilename FileWriter Filefile FileWriter FileDescriptorfdObj 19 8 2 2文件流 3 字符文件流读写文本文件 2 用字符流进行读写操作的方法与字节输入输出流的功能一样 Reader和Writer只是建立一条通往字符文件的通道 而要实现对字符数据的读写操作 还需要读方法和写方法来完成 20 8 2 2文件流 从输入流中按行读取字符的方法 StringreadLine 向输出流写入多个字符的方法 write Strings intoff intlen 将指定的字符串s从偏移量off开始的len个字符写入文件输出流 刷新BufferedWriter所建立的缓冲区 一次性将缓冲区中的数据写入文件的方法如下 flush 21 例8 3 将文件a txt读取到文本区 经修改后 另存为b txt 22 8 3随机存取文件和本地可执行文件 随机存取文件流RandomAccessFile类可以读写文件中任意位置上的字节 文本等数据 它有二个构造方法 1 RandomAccessFile Stringfilename Stringmode 2 RandomAccessFile Filefile Stringmode 8 3 1随机存取文件流 23 例8 4 用随机存取文件流读写文件 1 随机流 2 importjava io 3 classExample8 44 5 publicstaticvoidmain String args 6 7 try 8 RandomAccessFilef newandomAccessFile a txt rw 9 f writeBytes Zhangsiming 10 f close 11 12 catch IOExceptione 13 System out println e 14 15 16 24 例8 5 使用随机存取文件流RandomAccessFile实现一个英汉小词典程序 25 8 3 2本地可执行文件 在Java语言中 使用java lang包中的Runtime类可以运行本地机的可执行文件 每个Java应用程序都有一个Runtime类实例对象 使应用程序能够与其运行的环境相连接 但应用程序不能创建自己的Runtime类实例对象 而要通过该类的静态方法getRuntime 创建Runtime类对象 26 8 3 2本地可执行文件 Runtime类对象有几个常用方法 1 exit intstatus 通过启动虚拟机的关闭序列 终止当前正在运行的Java虚拟机 2 gc 运行垃圾回收器 3 getRuntime 4 exec Stringcommand 调用该方法可以在单独的进程中运行由字符串命令指定的本地机上的可执行文件 27 例8 6 使用Runtime类对象运行例8 5 1 publicclassExample8 62 publicstaticvoidmain Stringargs 3 4 try 5 Runtimert Runtime getRuntime 6 rt exec javaExample8 5 7 8 catch Exceptione System out println e 9 10 28 例8 7 调用Windows系统自带的计算器 1 publicclassExample8 72 publicstaticvoidmain Stringargs 3 4 try 5 Runtimert Runtime getRuntime 6 rt exec c windows system32 calc exe 7 catch Exceptione System out println e 8 9 29 例8 8 应用Runtime类设计一个Java语言简易编译器 该编译器具有编写源程序 编译和运行程序的功能 30 8 4数据流与对象流 有许多应用程序需要将处理的数据作为Java的一种基本类型 如布尔型 字节 整数和浮点数 来使用 这就要用到数据流类DataInputStream类和DataOutputStream类 这两个数据流类是很有用处的 它们允许程序按机器无关的格式读取Java原始数据 8 4 1数据流 31 8 4 1数据流 用下面的构造方法就可以建立DataInputStream类和DataOutputStream类的实例 publicDataInputStream InputStreamin publicDataOutputStream OutputStreamout 32 8 4 1数据流 33 例8 9 应用DataInputStream类和DataOutputStream类复制声音文件 34 8 4 2对象流 Java可以将对象作为一个整体通过对象流进行传输和存储 1 对象流的构造方法ObjectInputStream类和ObjectOutputStream类的构造方法为 ObjectInputStream InputStreamin ObjectOutputStream OutputStreamout 35 例8 10 编写程序 在窗体中实例化球面板对象 当单击 写入文件 按钮后 能将球面板对象写入到一个文件中 当单击 读取对象 按钮后 再将该球面板对象从文件中取出 并在窗体中显示 36 8 4 2对象流 2 对象序列化序列化是一个很重要的概念 当我们使用对象流写入或读出一个对象时 其前提是这个对象必须是序列化的 这是因为我们把一个对象写入到文件后 能再把这个对象正确地读回到程序中来 人们把将一个对象转化为适合传输或磁盘存储的数据流的过程称为对象序列化 Java提供给我们的绝大多数类对象都是序列化对象 比如组件等 用户自己定义的类需要序列化时 必须实现Serializable接口 37 例8 11 编写一个简单的程序 保存日期 地址对象到一个对象流中 程序的第一个任务就是保证Address类序列化 因此必须使这个类实Serializable接口 要存储对象数据 还需要建立一个ObjectOutputStream对象 ObjectOutputStreamout out newObjectOutputStream newFileOutputStream sample data 其次 只要简单地使用ObjectOutputStream类中的writeObject方法 例如下列形式 Addressaddress newAddress abc abc out writeObject address 根据Date类的定义 它是已序列化的 所以我们要写入流中的所有对象都已序列化 38 8 5Java多媒体技术 39 在Sun公司的jdk自带的rt jar包文件中 有AudioStream class AudioPlayer class类用于播放声音文件 我们可以使用输入流 FileInputStreamfile newFileInputStream 声音文件 wav AudioStreamaudio newAudioStream file 使用AudioPlayer类的start 进行播放 AudioPlayer player start audio 8 5 1应用输入流播放音频文件 40 例8 13 应用输入流播放音频文件 41 8 5 2Java多媒体包JMF的应用 Java有一个多媒体包JMF JavaMediaFramework 可以用来编写多媒体应用程序 建立一个多媒体程序有下列几个步骤 1 创建多媒体播放对象try MediaLocatormrl newMediaLocator 多媒体文件名 player Manager createPlayer mrl catch MalformedURLExcepti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Lesson 22 My Favourite Subject教学设计-2025-2026学年小学英语四年级上册冀教版(一起)
- 生鲜冷链物流智能化管理下的风险评估模型
- 线上线下混合教学模式在药理学课程中的实践与改革
- 公益岗考试题型及答案
- 工艺管控考试题及答案
- 钢结构标准考试题及答案
- 加强无机非金属材料领域的国际合作
- 加强健康教育提升民众健身意识和能力
- 大模型支持下工科类教学资源整合与共享模式
- 中职医学基础试题及答案
- 人教版(新教材)高中生物选择性必修1课件3:4 3 免疫失调
- 《SLT 582-2025水工金属结构制造安装质量检验检测规程》知识培训
- “燕园元培杯”2023-2024学年全国中学生地球科学奥林匹克竞赛决赛试题详解
- 中国血脂管理指南(基层版+2024年)解读
- 分子诊断技术在感染性疾病中的应用-深度研究
- 《智能AI分析深度解读报告》课件
- 气道异物护理教学
- 2024年版机电产品国际招标标准招标文件
- 企业合规经营规范手册
- 企业员工心理健康与欺凌防范政策
- 四川省兴文县建设煤矿2021年矿山储量年报
评论
0/150
提交评论