Java程序设计案例教程(第2版)课件 单元10 输入输出(IO) 流_第1页
Java程序设计案例教程(第2版)课件 单元10 输入输出(IO) 流_第2页
Java程序设计案例教程(第2版)课件 单元10 输入输出(IO) 流_第3页
Java程序设计案例教程(第2版)课件 单元10 输入输出(IO) 流_第4页
Java程序设计案例教程(第2版)课件 单元10 输入输出(IO) 流_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1.File的基本概念2.操作文件/目录3.文件/目录属性10.1File简介(IO)流输入输出Java语言程序设计Unit101.File的基本概念

代表了磁盘文件本身的对象,提供了一些操作文件的方法,并且这些操作与平台无关。

而我们所说的文件代表了程序、文本、图像、视频等系列文件,也包括文件夹(目录)。File类功能

通过调用File类的方法,能够完成创建、删除、重命名文件,判断文件的各项属性,设置和查询文件的最近修改时间等操作。

1.File的基本概念方式一:File(Stringpathname)File实例创建方式二:File(Stringparent,Stringchild)方式三:File(Fileparent,Stringchild)通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。如:Filefile1=newFile("e:\\demo\\a.txt");根据parent路径名字符串和child路径名字符串创建一个新File实例。如:Filefile2=newFile("e:\\demo","a.txt");根据parent抽象路径名和child路径名字符串创建一个新File实例。如:Filefile3=newFile("e:\\demo");Filefile4=newFile(file3,“a.txt”)

;2.操作文件/目录

由于File类只是文件和目录的抽象表示形式,因此在上述方式创建File对象的实例中,该实例对象不一定真实存在。而新文件/目录的创建需要我们去执行创建的方法。针对文件的创建,调用createNewFile()方法,而针对目录则调用的是mkdir()。如:Filefile1=newFile("e:\\demo");File1.mkdir();//创建目录,若已经存在则不创建Filefile2=newFile("e:\\demo","a.txt");

file2.createNewFile();//创建文件,若已经存在则不创建1文件和目录的创建2.操作文件/目录

删除文件或者目录,需注意的是若要删除一个文件夹,请确保该文件夹内不能包含文件或者文件夹,并且默认情况下,删除的文件/目录是不走回收站的。调用delete()方法删除文件的前提是该文件必须是存在的,才会返回true表示删除成功。如:file.delete();2文件和目录的删除2.操作文件/目录

在文件的重命名中,renameTo(Filedest)方法中所需的参数为File的文件对象,区分为两种情况:方式一是目录不变只改文件名,方式二是目录或文件名都发生变化,这两种情况都可以通过该方法来实现。因此,该方法不仅能重命名文件名,还能实现文件的剪切复制功能。如:Filefile1=newFile("zjjm.jpg");FilefileNew1=newFile("浙江经贸.jpg");//方式一file1.renameTo(fileNew1);FilefileNew2=newFile("e:\\浙江经贸.jpg");//方式二File1.renameTo(fileNew2);

1文件和目录重命名3.文件/目录属性File定义了很多获取File对象标准属性的方法,如文件的可读、可写、隐藏等属性,我们可以通过封装的方法去验证文件对象的属性,然而不一定有相应的方法来修改这些属性。3.文件/目录属性

获取文件的各项属性知识应用浙江经贸职业技术学院案例

10-2单元10输入输出(IO)流文件与目录案例单元Java语言程序设计主讲周芳妃eclipseeclipseeclipse案例

10-2:文件与目录案例目标用户创建读写文本文件类FileUtils,实现对目录和文件的基本操作。案例解释在类中实现两个方法,对文件和目录进行判断是否存在,存在则执行相应的操作,不存在则创建该文件。案例效果案例

10-2:文件与目录实现思路基本步骤按实训要求创建工程并配置环境创立File文件操作类,构建空参构造器。创建dirsOperate操作方法 public

voiddirsOperate(StringdirPath){}创建fileOperate方法

publicvoidfileOperate(Stringfilename){}在测试类中创建实例并验证。10.3.1JavaI/O技术概述10.3.2JavaI/O流分类10.3JavaI/O流浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.3.1JavaI/O技术概述“流”,是一种数据传输的抽象描述,是用来连接数据传输的起点和终点,是与具体的设备无关的一种中间介质。通过处理输入、输出操作,实现从文件中或键盘上读写数据,以及与屏幕、打印机等设备的数据转换和传输。10.3.1JavaI/O技术概述流的基本特点(1)流不依赖于设备,但是“流”的方向却与设备有一定关联,输入输出不是从设备的角度考虑,而是从程序的角度出发。从外部设备到程序称为数据的“输入”,从程序到外部设备称为“输出”。(2)“流”作为数据传输的管道,可以互相嵌套,以提高处理数据的效率。比如,频繁的读写操作会降低流处理过程中的运行效率,则可以通过在现有流的基础上加入“缓冲流”来提高程序的效率和功能。10.3.1JavaI/O技术概述10.3.2JavaI/O流分类10.3JavaI/O流浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.3.2JavaI/O流分类InputStreamOutputStreamReaderWriter1243Java的输入输出流都是建立在四个抽象类的基础上10.3.2JavaI/O流分类输入流(Input)是外部源向程序提供数据,也就是读取数据。输出流(output)是由程序向外部目的地提供数据传输,也就是写出数据。根据流中的数据传输方向10.3.2JavaI/O流分类字节流

字节流以字节为传输单位,可以处理文本、视频、图像等所有的文件。根据流向又可分为字节输入流、字节输出流。字符流

字符流以字符为传输单位,为了操作文本数据而提供的一种方式。根据流向又可分为字符输入流和字符输出流。根据流的数据类型10.3.2JavaI/O流分类节点流

节点流直接建立在输入输出设备上。处理流

处理流则可以在以某一个节点作为流的来源的同时,对数据进行操作处理。根据流的建立方式和工作原理浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.4.1InputStream与OutputStream10.4.2FileInputStream与FileOutputStream10.4.3ByteArrayInputStream与ByteArrayOutputStream10.4字节流10.4.1InputStream与OutputStream

InputStream和OutputStream针对字节流而设计,位于所有字节流的顶层,定义了所有字节流类通用的基本功能。

字节流可以处理任何类型的对象,更适合操作图像、视频等二进制对象文件,而在操作字符和字符串时,建议使用字符流。10.4.1InputStream与OutputStream1InputStream(输入字节流)方法描述intavailable()返回当前可读取的输入字节数voidmark(intreadlimit)在此输入流中标记当前的位置,该标记在读入readlimit个字节之前一直有效booleanmarkSupported()测试此输入流是否支持mark

和reset

方法intread()从输入流中读取数据的下一个字节,以整数表示。当到达文件末尾时则返回-1intread(byte[]b)从输入流中读取b.length个字节,并将其存储在缓冲区数组b

中。当到达文件末尾时则返回-1intread(byte[]b,intoff,intlen)尝试读取len个字节到b中,从b[off]开始保存读取的字节。该方法返回成功读取的字节数,当到达文件末尾时返回-1voidreset()将此流重新定位到最后一次对此输入流调用mark方法时的位置longskip(longn)跳过和丢弃此输入流中数据的n个字节voidclose()关闭输入源,释放系统资源。如果试图继续进行读取会引发IOException异常InputStream定义了一个抽象的Java字节输入流类,该类大部分的方法在出错条件下都会触发一个IOException异常。InputStream类定义的方法如下表所示:10.4.1InputStream与OutputStream2OutputStream(输出字节流)方法描述intflush结束输出状态,清空所有缓冲区voidwrite(intb)向输出流中写入n个字节voidwrite(byte[]b)向输出流中写入一个完整的字节数组voidwrite(byte[]b,intoff,intlen)将指定byte数组中从偏移量off

开始的len

个字节写入此输出流voidclose()关闭输出流,释放系统资源。如果试图继续向流中写入内容会引发IOException异常OutputStream定义了一个抽象的Java字节输出流类,该类大部分的方法都返回void,并在出错条件下都会触发一个IOException异常。OutputStream类定义的方法如下表所示:浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.4.1InputStream与OutputStream10.4.2FileInputStream与FileOutputStream10.4.3ByteArrayInputStream与ByteArrayOutputStream10.4字节流10.4.2FileInputStream与FileOutputStreamFileInputStream类和FileOutputStream类是处理文件的字节型节点流,继承了InputStream和OutputStream基类的功能。

一般在进行文件字节流操作时,可以按照三步走的方式进行:(1)创建字节流对象(2)进行字节的读写操作(3)关闭流10.4.2FileInputStream与FileOutputStream1FileIntputStreamFileInputStream使用FileInputStream类创建的InputStream对象可以用于从文件读取字节到程序,哪些文件可用取决于主机环境。常用的构造方法FileInputStream(Stringname)FileInputStream(Filefile)10.4.2FileInputStream与FileOutputStream如://FileInputStreamfis=newFileInputStream("a.txt"); FileInputStreamfis=newFileInputStream(newFile("a.txt"));intby=0; while((by=fis.read())!=-1) System.out.print((char)by); fis.close();1FileIntputStream10.4.2FileInputStream与FileOutputStream2FileOutputStreamFileOutputStream

FileOutputStream是抽象类OutputStream类的子类,继承了其所有的方法,并实现了抽象方法write(),可以向磁盘文件中写入数据。FileOutputStream对象的创建不依赖于已经存在的文件,当创建对象时,FileOutputStream会在打开文件之前创建文件,但是若试图打开的文件是只读的,则会抛出异常。10.4.2FileInputStream与FileOutputStream2FileOutputStream常用的构造方法FileOutputStream(Stringname):创建一个向具有指定名称的文件中写入数据的文件输出流。FileOutputStream(Filefile):创建一个向指定File对象表示的文件写入数据的文件输出流。FileOutputStream(Stringname,booleanappend)FileOutputStream(Filefile,booleanappend)append如果为true,即可追加,表示将字节写入文件末尾处。10.4.2FileInputStream与FileOutputStream2FileOutputStream如://FileOutputStreamfos=newFileOutputStream("fos.txt"); Filefile=newFile("fos.txt"); FileOutputStreamfos=newFileOutputStream(file); fos.write("Hello,World".getBytes()); fos.close();浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.4.1InputStream与OutputStream10.4.2FileInputStream与FileOutputStream10.4.3ByteArrayInputStream与ByteArrayOutputStream10.4字节流10.4.3ByteArrayInputStream与ByteArrayOutputStream1ByteArrayInputStream构造函数ByteArrayInputStream(byte[]b):参数b是一个字节数组来提供数据源ByteArrayInputStream(byte[]b,intoffset,intlength):表示从字节数组的子集创建ByteArrayInputStream对象,使用b作为其缓冲区数组,子集从offset指定的索引位置开始,共length个字节。ByteArrayInputStream实现了使用字节数组作为源的输入流。如:byte[]b="woaibeijingtiananmen".getBytes();ByteArrayInputStreambais=newByteArrayInputStream(b);ByteArrayInputStreambais2=newByteArrayInputStream(b,3,5);}10.4.3ByteArrayInputStream与ByteArrayOutputStream2ByteArrayOutputStream构造函数ByteArrayOutputStream()ByteArrayOutputStream(intsize)ByteArrayOutputStream实现了使用字节数组作为目标的输出流。如:实现将“woaibeijingtiananmen”写入文件byte[]b="woaibeijingtiananmen".getBytes();FileOutputStreamfos=newFileOutputStream("baos.txt");ByteArrayOutputStreambaos=newByteArrayOutputStream();baos.write(b);baos.writeTo(fos);浙江经贸职业技术学院案例

10-5单元10输入输出(IO)流复制图片案例单元Java语言程序设计主讲周芳妃eclipseeclipseeclipse案例

10-5:复制图片案例目标基于字节流的读写操作,实现图片的复制。案例解释

图片是一种以字节方式存储的数据类型,利用字节输入流和字节输出流实现将工程项目文件下的图片文件复制到D盘下,并修改文件名称案例效果案例

10-5:复制图片实现思路基本步骤按实训要求创建工程并配置环境创建图片文件操作类创建图片复制方法根据src确定要复制的图片文件根据dest确定复制目的地判断源图像文件是否存在若存在则复制,不存在则提示信息验证测试浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.6.1Reader与Writer10.6.2InputStreamReader与OutputStreamWriter10.6.3BufferedReader与BufferedWriter10.6字符流10.6.1Reader与WriterFilterReaderPushBackReader字符输入/输出类字符输入流的类层次关系字符输出流的类层次关系10.6.1Reader与Writer方法描述intread()从输入流中读取数据的一个字符,以int类型的形式返回。当到达文件末尾时则返回-1intread(char[]b)从输入流中读取字符,并将其存储在char型数组缓冲区b

中,返回的是读取的字符个数intread(char[]b,intoff,intlen)尝试读取len个字符并存入到b中,从b[off]开始保存读取的字符,返回成功读取的字节数,当到达文件末尾时返回-1booleanready()如果下一个输入请求不等待,则返回truelongskip(longn)跳过和丢弃此输入流中数据的n个字符,返回实际略过的字符数voidclose()关闭输入源,释放系统资源。如果试图继续进行读取会引发IOExceptionReader是抽象类,定义了所有字符输入流应该实现的大部分成员方法。类中提供的常用的成员方法如表所示:10.6.1Reader与Writer方法描述writerappend(charch)将ch追加到调用输出流的末尾,返回对调用流的引用voidwrite(intch)向输出流中写入单个字符voidwrite(char[]b)向输出流中写入一个完整的字符数组voidwrite(char[]b,intoff,intlen)将指定byte数组中从偏移量off

开始的len个字符写入此输出流abstractvoidclose()关闭输出流,释放系统资源。如果试图继续向流中写入内容会引发异常abstractvoidflush完成输出状态,从而清空所有缓冲区Writer是抽象类,定义了所有字符输出流应该实现的大部分成员方法。类中提供的常用的成员方法如表所示:浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.6.1Reader与Writer10.6.2InputStreamReader与OutputStreamWriter10.6.3BufferedReader与BufferedWriter10.6字符流10.6.2InputStreamReader与OutputStreamWriterInputStreamReaderOutputStreamWriter12InputStreamReader和OutputStreamWriter实现了字节流和字符流之间的转换可以将一个字节流中的字节码解码成字符。可以将写入的字符编码成字节后写入一个字节流。10.6.2InputStreamReader与OutputStreamWriter1InputStreamReaderInputStreamReader使用指定的字符集读取字节并将其解码为字符,可以指定采用的字符集,也可以接受平台默认的字符集。InputStreamReader类典型的构造方法InputStreamReader(InputStreamin)InputStreamReader(InputStreamin,Charsetcs)10.6.2InputStreamReader与OutputStreamWriter2OutputStreamWriterOutputStreamWriter使用指定的字符集把要向其写入的字符编码为字节,可以指定采用的字符集,也可以接受平台默认的字符集。OutputStreamWriter类典型的构造方法OutputStreamWriter(OutputStreamout)OutputStreamWriter(OutputStreamout,Charsetcs)浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.6.1Reader与Writer10.6.2InputStreamReader与OutputStreamWriter10.6.3BufferedReader与BufferedWriter10.6字符流10.6.3BufferedReader与BufferedWriter当程序与外部设备之间进行读写文本或其他数据类型时,如果简单地通过read()和write()方法进行逐个字节或字符数据的处理,处理或交换的效率将非常低。

为了提高程序的读写效率,Java提供了缓冲流,在内存中设置一个内部缓冲区用以批量处理数据。

缓冲流都是以“Buffered”开头的。10.6.3BufferedReader与BufferedWriter1BufferedReaderBufferedReader类通过缓冲输入提高读取性能,该类具有两个常见的构造函数BufferedReader(Readerin):创建一个使用默认大小输入缓冲区的缓冲字符输入流。BufferedReader(Readerin,intsz):创建一个使用指定大小输入缓冲区的缓冲字符输入流,缓冲区大小由sz指定。构建BufferedReader对象时,必须传递一个Reader类型的对象作为参数,如下代码简单实现了读取键盘上输入的一整行字符:BufferedReaderb=newBufferedReader(newInputStreamReader(System.in));Stringstr=b.readLine();10.6.3BufferedReader与BufferedWriter2BufferedWriterBufferedWriter是缓冲输出字符流,使用BufferedWriter可以通过减少实际向输出设备写入数据的次数来提高性能。BufferedWriter具有以下两个构造函数:BufferedWriter(Writerout)BufferedWriter(Writerout,intsz)通常我们会将OutputStreamWriter包装到BufferedWriter中以避免频繁调用,如:BufferedWriterb=newBufferedWriter(newOutputStreamWriter(System.out));浙江经贸职业技术学院案例

10-7单元10输入输出(IO)流读写文本文件案例单元Java语言程序设计主讲周芳妃eclipseeclipseeclipse案例

10-7:读写文本文件案例目标

练习常规的IO操作,读取和写入指定目录的文本文件并输出文件内容。案例解释

实现类TextWriterReader的读写功能,实现对某个指定文件的读取功能,并将读取的结果返回。实现将指定内容写入到指定文件的功能,并提示是否写入成功。案例效果实现思路基本步骤按实训要求创建工程并配置环境创建读写文本文件类:创建读取文本文件的方法:创建文本缓存对象,先判断文件是否有效存在,存在则逐行读取并存入文本缓存中,不存在则提示信息。创建写入文本文件的方法:基于指定的目录创建文件对象,通过流对象把文本写入指定文件。创建测试类,创建读写文本文件类的对象,进行读取和写入方法的测试,输出操作结果案例

10-7:读写文本文件10.8操作Properties文件浙江经贸职业技术学院(IO)流输入输出Java语言程序设计Unit10主讲周芳妃10.8操作Properties文件Java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,文件的内容格式为“键=值”的格式,在properties文件中,可以用“#”来作注释。properties文件在Java编程中操作方便,其一个很重要的特性是可以和IO流结合使用,将其保存在流中或从流中加载配置文件。10.8操作Properties文件Properties是Hashtable的子类,属性列表中每个键和值都是String类型的。Properties定义了一个实例变量,一个属性列表,包含属性

温馨提示

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

评论

0/150

提交评论