Java开发综合实战 课件 项目7 IO操作_第1页
Java开发综合实战 课件 项目7 IO操作_第2页
Java开发综合实战 课件 项目7 IO操作_第3页
Java开发综合实战 课件 项目7 IO操作_第4页
Java开发综合实战 课件 项目7 IO操作_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

I/O操作项目七高等院校公共课系列精品教材Java开发综合实战学会理论联系实际,注意读写文件的安全性。学以致用,注重培养灵活运用所学解决问题的能力。思政目标能够创建、删除、遍历文件和目录能够使用字节流和字符流读写文件能够使用缓冲流和随机流读写文件技能目标Java的I/O操作主要是指使用java.io包的操作类进行输入、输出操作。java.io包提供了全面的I/O接口,其中最重要的是5个类(File、InputStream、OutputStream、Reader、Writer)和一个接口(Serializable),这是掌握I/O操作的核心。本项目将介绍使用File类操作文件和目录,以及读写文件内容的常用方法。项目导读任务1使用File类操作文件任务2读写文件内容知识梳理使用File类操作文件任务1任务1使用File类操作文件000000在编写进销存管理系统时,小白希望入库和出库商品时,对应的商品信息能自动写入一个指定的文件,用于检查程序是否正常运行。在查看Java的标准库java.io时,小白得知使用其中的File类可以操作文件和目录。那么,使用File对象如何操作文件和目录呢?能否查看文件和目录的属性,并筛选特定的文件呢?000000文件是计算机系统中一种非常重要的数据存储形式。Java的标准库java.io提供了File类来操作文件本身,例如,创建、删除、重命名文件,也可获取文件的基本信息,如文件所在的路径、文件名称、大小和修改时间等。一、创建File对象使用File类的构造方法可以创建一个文件对象,File对象既可以表示文件,也可以表示目录。要构造一个File对象,需要传入文件路径,可以是绝对路径,也可以是相对路径。语法格式有如下3种:(1)File(Stringpathname)这种构造方法使用参数pathname指定包含文件名的路径。Windows平台使用\作为路径分隔符,在Java字符串中需要用转义字符\\表示\,也可以直接使用/进行路径分隔。Linux平台使用/作为路径分隔符。任务1使用File类操作文件注意:构造一个

File对象,即使传入的文件或目录不存在,代码也不会出错,因为构造一个File对象,并不会导致任何磁盘操作。只有在调用File对象的某些方法的时候,才真正进行磁盘操作。(2)File(Stringparent,Stringchild)这种构造方法通过指定父路径parent和子路径child传入文件路径。父路径是磁盘根目录或磁盘中的某个文件夹,如D:/或D:/workspace/。子路径是包含文件类型后缀的文件名称,例如stars.txt。(3)File(Filef,Stringchild)这种构造方法根据磁盘中的某个文件夹f(称为父文件对象)和要创建的文件名child(称为子文件对象)创建文件对象。任务1使用File类操作文件二、获取文件属性创建文件对象后,可以调用File类的方法获取文件本身的一些属性,如表所示:任务1使用File类操作文件任务1使用File类操作文件案例——获取文件基本信息本案例利用路径和文件名称构造一个File对象,通过调用File类的方法获取该文件对象的文件名称、路径、长度、最后修改日期等属性信息,并判断该文件对象是否为文件或目录、是否可读取或可写入,以及是否处于隐藏状态。任务1使用File类操作文件运行结果三、创建和删除文件1.创建文件使用File类创建文件对象后,如果文件对象指向的文件不存在,可以调用createNewFile()方法创建文件,语法格式如下:booleancreateNewFile()2.删除文件使用File类的delete()方法可以删除指定的文件,语法格式如下:booleandelete()任务1使用File类操作文件任务1使用File类操作文件指定文件不存在的运行结果

指定文件存在的运行结果案例——创建临时文件本案例首先检测指定路径是否存在指定名称的文件,如果有,则删除同名文件后,再创建一个新文件,否则创建该文件。四、创建和删除文件夹使用File对象可以指向一个文件夹,然后调用mkdir()方法创建文件夹。如果要创建多级目录,则调用mkdirs()方法。booleanmkdir():创建一个文件夹,路径名由当前File对象指定。创建成功返回true,否则返回false。booleanmkdirs():创建多级目录,路径名由当前File对象指定。任务1使用File类操作文件案例——创建多级目录本案例首先判断指定目录下是否存在demo文件夹,如果存在,则进一步判断文件夹是否为空,为空则删除,否则输出提示信息;如果文件夹不存在,则创建该文件夹,并在该文件夹下创建3个子文件夹。任务1使用File类操作文件创建的目录

运行结果五、遍历目录所谓遍历目录,是指访问指定目录中的每一个文件和文件夹,用于查找指定的文件,或列示其中的所有文件。Java在File类中提供了两个列出文件夹内容的方法:list()和listFiles()方法。1.list()方法该方法使用字符串数组返回当前File对象表示的目录中所有的文件和文件夹名称。2.listFiles()方法该方法的功能与list()方法相同,不同的是,该方法会列出文件的完整路径,返回值为一个File对象数组。任务1使用File类操作文件案例——筛选.zip压缩文件本案例构造文件筛选器对象,调用listFiles()方法筛选指定目录下的.zip压缩文件。任务1使用File类操作文件运行结果读写文件内容任务2任务引入小白使用File对象成功地在指定路径创建了一个文本文件,接下来就需要实现数据的读写操作。小白得知Java在java.io包中提供了I/O流相关的类用于读写数据。那么,什么是I/O流呢?在Java中,怎样使用I/O流的类读写数据呢?考虑到执行效率,读写少量的字符和大篇幅的字符内容的方法是否一样呢?任务2读写文件内容知识准备一、流的概念Java以数据流的形式处理输入和输出。流是一组有序的字节或字符集合,根据流的运动方向,可以分为输入流和输出流两种。根据流中元素的基本单元是一个字节还是一个字符(两个字节),可以将流分为字节流和字符流。在Java中,所有与输入流有关的类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;所有与输出流有关的类都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。这四个类都是抽象类,其子类都有一个共性特点:子类名后缀都是父类名,前缀名都是这个子类的功能名称。任务2读写文件内容二、文件字节流字节流是指处理字节数据的流对象。计算机中的最小数据单元为字节,所以设备上的数据无论是图片、文字还是音视频,都是以二进制方式存储的,以一个byte(字节)为数据单元进行体现。也就是说,字节流可以处理设备上的所有数据。1.文件字节输入流FileInputStreamFileInputStream类是字节输入流InputStream的一个常用子类,用于从文件系统中读取诸如图像数据之类的原始字节流,实现文件流输入。该子类的实例方法都继承自InputStream类,有以下两种格式的构造方法创建指向文件的输入流:FileInputStream(Stringname):创建源为name指定的文件的文件字节输入流。FileInputStream(Filefile):创建源为file指定的文件的文件字节输入流。任务2读写文件内容任务2读写文件内容2.文件字节输出流FileOutputStreamJava提供了OutputStream类创建字节输入流,OutputStream类的常用方法如表所示。任务2读写文件内容对应于FileInputStream类输入文件流,字节输出流OuputStream提供了一个常用的子类FileOutputStream,用于实现文件流输出。该子类的实例方法都继承自OutputStream类,有以下两种格式的构造方法创建指向目的地的输出流。FileOutputStream(Stringname):创建目的地为name指定的文件的文件字节输出流。FileOutputStream(Filefile):创建目的地为file指定的文件的文件字节输出流。使用上面两种构造方法创建的文件字节输出流指向目的地文件,如果这个文件已存在,则输出流将刷新该文件;如果文件不存在,Java则自动创建该文件。如果要设置输出流是否自动刷新文件,可以在构造方法中添加一个布尔类型的参数,如下所示:FileOutputStream(Stringname,booleanappend)FileOutputStream(Filefile,booleanappend)任务2读写文件内容提示:应用程序在运行过程中,如果打开了一个文件进行读写,完成后要及时关闭,释放资源,否则,可能会影响其他应用程序运行。调用close()方法关闭OutputStream及其子类对象之前,程序会自动调用flush()方法输出缓冲区内容。任务2读写文件内容案例——读取文本文件本案例创建一个字节输入流对象,读取一个文本文件中的所有字节并输出,演示InputStream类的使用方法,以及I/O流异常处理的方式。任务2读写文件内容

运行结果

文本文件三、文件字符流在处理字符时,会涉及到不同的字符编码,不同的字符编码相应不同的字符编码表。为了便于解析不同类型的字符,Java将字节流和编码表封装成对象,这就是字符流。1.文件字符输入流FileReaderFileReader类使用如下两个构造方法创建文件字符输入流:FileReader(Stringname):创建源为name指定的文件的字符输入流。FileReader(Filefile):创建源为file指定的文件的文件字符输入流。任务2读写文件内容2.文件字符输出流FileWriter任务2读写文件内容FileWriter类使用如下两个构造方法创建文件字符输出流:FileWriter(Stringname):创建目的地文件为name指定的文件的文件字符输出流。FileWriter(Filefile):创建目的地文件为file指定的文件的文件字符输出流。与FileOutputStream类似,如果目的地文件已存在,通过在构造方法中添加一个布尔类型的参数,可以指定输出流是否刷新目的地文件。如下所示:FileWriter(Stringname,booleanappend)FileWriter(Filefile,booleanappend)任务2读写文件内容案例——创建文件写入诗词本实战在指定路径创建一个文件夹,并在文件夹中创建一个文本文件。然后在文件中写入诗词内容。任务2读写文件内容

运行结果

创建的文本文件

写入的诗词内容四、缓冲数据流在大型项目中,如果要传输的内容较多,通常会采用缓冲数据流对I/O进行性能优化。缓冲数据流为I/O流增加了内存缓冲区,数据以块为单位读入读出缓冲区,从而提升操作效率。Java提供BufferedReader类和BufferedWriter类处理缓冲数据流,这两个类分别继承自Reader类和Writer类,以行为单位进行输入和输出,创建的对象分别称为缓冲输入流和缓冲输出流。从构造方法可以看出,ButteredReader流和ButteredWriter流的源和目的地必须为字符流。任务2读写文件内容案例——大小写转换本实战获取键盘输入的字符串,将输入的字符转成大写后输出,直到输入“end”结束程序。任务2读写文件内容

运行结果

五、随机流前面介绍的读写数据的操作都需要创建指向文件的输入流和输出流,且只能顺序读写。Java还提供了一个既能读文件也能写文件的流,而且可以从任何指定的位置读写文件内容,这就是随机流。随机流使用RandomAccessFile类的以下两个构造方法创建。RandomAccessFile(Stringname,Stringmode)RandomAccessFile(Filefile,Stringmode)这两种构造方法创建源和目的地均为name或file指向的文件,对文件的访问方式为mode的随机流。其中,参数mode有以下几种取值:r:只读,只能从文件中读取内容。rw:可读写,既可以读取文件内容,也可以将数据写入文件。rwd:可读写,对文件内容的修改会同步写入存储设备。rws:可读写,对文件内容的修改和元数据都会同步写入存储设备。任务2读写文件内容创建随机流之后,要使用随机流读写文件,可以执行以下步骤:(1)调用RandomAccessFile类的length()方法获取文件的长度,并指定读写文件的起始位置。(2)调用seek(longposition)方法定位到指定位置。(3)调用读/写方法读写数据。RandomAccessFile类常用的读写方法如表所示。(4)操作完成后,调用close()方法关闭流。任务2读写文件内容任务2读写文件内容案例——随机读写商品信息本案例利用RandomAccessFile对象在文件中写入

温馨提示

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

最新文档

评论

0/150

提交评论