Java程序设计教程(第2版) 课件 第8章Java IO技术_第1页
Java程序设计教程(第2版) 课件 第8章Java IO技术_第2页
Java程序设计教程(第2版) 课件 第8章Java IO技术_第3页
Java程序设计教程(第2版) 课件 第8章Java IO技术_第4页
Java程序设计教程(第2版) 课件 第8章Java IO技术_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8周JavaIO技术2023年11Java

I/O技术2常见IO应用一4让我们一起来编程学习提纲3常见IO应用二21.JavaI/O技术在Java中,数据的输入和输出都是以流(Stream)的方式来处理。JDK中与输入输出相关的包和类都集中存放在java.io包中,涉及12个接口、51个类、17个异常。我们用不用逐个研究学习呢?显然不用,API帮助文档相当于一本字典,我们只需迅速查找到自己要的信息即可。java.io包其中包含5个重要的抽象类:InputStream、OutputStream、Reader、Writer和File。几乎所有与I/O相关的类都继承了这5个类。利用这些类提供的方法,Java可以方便地实现复杂的文件管理和多种I/O操作。1.1JavaI/O技术简介

31.JavaI/O技术Java中的流按单位可分为字节流和字符流。按Java的命名惯例,凡是以InputStream结尾的类均为字节输入流,以OutputStream结尾的类均为字节输出流,凡是以Reader结尾的类均为字符输入流,以Writer结尾的类均为字符输出流。1.2I/O流的分类41.JavaI/O技术按流的方向可分为输入流和输出流。输入流是任何有能力产出数据的数据源,是从键盘、磁盘文件或网络等流向程序的数据流。输出流是任何有能力接收数据的接收源,是从程序流向显示器、打印机、磁盘文件、网络的数据流。注意:判断是输入流还是输出流,请以程序为参照物,否则会出现混乱。1.2I/O流的分类51.JavaI/O技术Java中最基本的流是字节流。Java通过InputStream、OutputStream类及其子类提供了字节流的读写方法。为了方便处理双字节的Unicode字符,Java通过Reader、Writer类及其子类提供了字符流的读写等操作。为了进一步提高效率,Java通过BufferedReader、BufferedWriter等类提供了带缓冲区的字符串读写。1.2I/O流的分类61.JavaI/O技术在JDK1.4以前,Java的IO操作集中在java.io这个包中,是基于字节流或字符流的阻塞(blocking)API。IO流的好处是简单易用,缺点是效率较低。然而,一些对性能要求较高的应用,尤其是服务器端应用,往往需要一个更为有效的方式来处理IO。从JDK1.4开始,JDK提供了NIO(NewI/O),这是一个基于缓冲区和块的非阻塞(NonBlocking)IO操作的API。NIO效率很高,但编程比较复杂。JavaNIO由以下几个核心部分组成:Channels、Buffers和Selectors。1.3NIO71Java

I/O技术2常见IO应用一4让我们一起来编程学习提纲3常见IO应用二82.常见I/O应用一File类可以用来获取或处理与磁盘文件和文件夹相关等信息和操作,但不提供文件内容的存取。文件内容的存取功能一般由FileInputStream、FileOutputStream、FileReader、FileWriter等类实现。File类是对文件和文件夹的一种抽象表示(引用或指针)。File类的对象可能指向一个存在的文件或文件夹,也可能指向一个不存在的文件或文件夹。2.1File类的应用92.常见I/O应用一文件或文件夹的路径分为绝对路径和相对路径。路径分隔符:Windows操作系统下为“\”,Unix/Linux操作系统下为“/”。磁盘文件的绝对定位:盘符:\\文件夹1\\文件夹2…\\文件名。本资源定位方法缺乏灵活性,不适用于网络环境编程。Eclispe项目下文件的相对定位:相对路径是相对项目文件夹开始定位,src\\包\\…\\包\\文件名;绝对路径:\\项目名称\\src\\包\\…\\文件名。采用本方法项目开发阶段没有问题,但项目发布后没有“src”文件夹就会出现“文件找不到”的错误。

2.1File类的应用102.常见I/O应用一查阅API帮助文档,掌握File类的常用构造方法和常用方法:publicFile(Stringpathname)publicbooleanexists()publicbooleanisDirectory()publiclonglastModified():返回毫秒数publiclonglength()publicStringgetName()、getParent()、getPath():2.1File类的应用112.常见I/O应用一publicFile[]listFiles()publicbooleanmkdirs()publicbooleanrenameTo(Filedest)publicbooleandelete()

2.1File类的应用122.常见I/O应用一【编程实践】1.获取指定文件的信息:是否存在、文件名、路径、文件长度、最后修改时间、是否文件夹。2.文件改名、删除3.建立文件夹:d:\hb\hd\hdc4.显示某文件夹的内容2.1File类的应用132.常见I/O应用一FileInputStream用于从本地文件系统中的一个文件中读取字节数据。FileOutputStream:用于将数据写入文件字节输出流。

2.2利用字节流完成文件的读写142.常见I/O应用一查阅API帮助文档,掌握FileInputStream、FileOutputStream类的常用构造方法和常用方法:publicFileInputStream(Filefile)throwsFileNotFoundExceptionpublicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicint

read()throwsIOException:返回下一个字节的数据,如果到达文件结尾则返回-1。publicvoidwrite(intb)throwsIOException2.2利用字节流完成文件的读写152.常见I/O应用一【编程实践】用字节流的方式将OO.png复制到D:\【编程步骤】1.建立文件输入字节流对象,建立文件输出字节流对象。2.从输入流循环读取字节,写入到输出流中3.关闭输入流和输出流4.注意捕获异常处理或声明抛出的异常2.2利用字节流完成文件的读写162.常见I/O应用一我们可以以字符串、输入流、文件等作为参数来直接构建Scanner对象,然后就可以逐行逐字(根据正则表达式来分隔)来扫描整个文本,并对扫描后的结果做想要的处理。PrintStream在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型的数据的格式化表示形式。

publicstaticfinalPrintStreamout2.3利用Scanner和PrintStream完成文件的读写172.常见I/O应用一查阅API帮助文档,Scanner类中需要重点掌握常用构造方法和常用方法:publicScanner(Filesource)throwsFileNotFoundExceptionpublicbooleanhasNextLine()publicStringnextLine()PrintStream类中需要重点掌握常用构造方法和常用方法:publicPrintStream(Filefile)publicPrintStream(StringfileName)publicvoidprintln(Stringx)2.3利用Scanner和PrintStream完成文件的读写182.常见I/O应用一【编程实践】将九九乘法表输出到一个文本文件。【编程实践】1.以源文件sg.txt为参数,建立Scanner对象,以目标文件为参数建立PrintSream对象2.从输入流循环读取一行字符串,写入到输出流中。3.关闭输入流和输出流4.注意捕获异常处理或声明抛出的异常2.3利用Scanner和PrintStream完成文件的读写191Java

I/O技术2常见IO应用一4让我们一起来编程学习提纲3常见IO应用二203.常见I/O应用二DataInputStream类能够使Java应用程序以一种与机器无关的方式,直接从底层输入流读取Java的八种基本类型数据。而DataOutputStream类能够将Java八种基本类型数据写出到一个输出流,然后可以用DataInputStream输入流读取这些数据。3.1基本类型数据的读写213.常见I/O应用二查阅API帮助文档,掌握DataInputStream、DataOutputStream类的常用构造方法和常用方法:publicDataInputStream(InputStreamin)publicfinaldoublereadDouble()throwsIOExceptionpublicDataOutputStream(OutputStreamout)publicfinalvoidwriteDouble(doublev)throwsIOException

3.1基本类型数据的读写223.常见I/O应用二【编程要求】将100个随机生成的小数(0-1000之间)写入文件,要求以’#’分隔。然后从该文件依次读出每一个小数。编程提示:DataOutputStream类的相关方法实现。3.1基本类型数据的读写233.常见I/O应用二通常状况下,当Java程序运行结束时,JVM内存中的相关对象将随之销毁。如果我们想将对象以某种方式保存下来,在程序的下次运行时再恢复该对象,可以通过对象的序列化和反序列化来实现。序列化指将内存中对象的相关信息(除transient以外的全部属性值等)进行编码,然后写到外存的过程。注意:用transient修饰的对象变量将不会被序列化。3.2序列化与反序列化243.常见I/O应用二反序列化的顺序正好相反,反序列化将序列化的的对象信息从外存中读取,并重新解码组装为对象的过程。Java提供了ObjectInputStream/ObjectOutputStream类来实现序列化与反序列化。只有实现Java.io.Serializable接口的类的对象才能被序列化和反序列化,否则会出现java.io.NotSerializableException。3.2序列化与反序列化253.常见I/O应用二查阅API帮助文档,ObjectInputStream、ObjectOutputStream类中需要重点掌握常用构造方法和常用方法:publicObjectInputStream(InputStreamin)throwsIOExceptionpublicfinalObjectreadObject()publicObjectOutputStream(OutputStreamout)throwsIOExceptionpublicfinalvoidwriteObject(Objectobj)throwsIOException3.2序列化与反序列化263.常见I/O应用二【编程要求】

Student类(sno,sname,password,sex)。将password设置为transient,要求覆盖父类Object的toString()方法。至少生成5个Student对象,sno为键,Student对象为值,放入到HashMap<String,Student>。将HashMap序列化到一个文件d:\\student.dat(要求不序列化password)。从d:\\student.dat中反序列化得到HashMap<String,Student>,并输出。3.2序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论