第5章 文件操作在

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章文件操作在项目中的应用中国人民大学出版社技能目标能利用File类处理文件与目录,能用FileInput、FileOutput等类向文件读写数据知识目标掌握File类的基本用法;理解数据流的概念;掌握利用字节流、字符流读写文件的用法;掌握利用Bean组件进行文件上传与下载。依托任务在许多网站中加入了民意调查功能,比如调查支持某观点的人有多少、反对某观点的人有多少、不愿发表观点的有多少。我们的任务是通过文件随时保存用户对观点的投票情况,当然这样的民意调查也比较多地采用一些图片来吸引浏览者的目光,因此应具备文件上传功能。任务一文件与目录操作在对某观点的民意调查的统计网站中,只要用户表明了自己的立场,则应马上把持此观点的人数在原人数基础上加1然后保存到文件中。任务一文件与目录操作1.创建File类对象创建一个File对象的构造方法有3个:File(Stringfilename);File(StringdirectoryPath,Stringfilename);File(Filef,Stringfilename);其中,filename是文件名字,directoryPath是文件的路径,f是指定成一个文件的目录。使用File(Stringfilename)创建文件时,该文件被认为是与当前应用程序在同一目录中。2.使用File对象获取文件本身的一些信息在File类中有很多方法可以获得文件本身的一些信息,常用的获取文件本身信息的方法如下:①StringgetName():获取文件的名字。②booleancanRead():判断文件是否是可读的。③booleancanWrite():判断文件是否可被写入。④booleanexits():判断文件是否存在。⑤longlength():获取文件的长度(单位是字节)。⑥StringgetAbsolutePath():获取文件的绝对路径。⑦booleanisHidden():判断文件是否是隐藏文件。⑧booleanisFile():判断文件是否是一个正常文件,而不是目录。⑨booleanisDirectroy():判断文件是否是一个目录。3.使用File对象创建目录booleanmkdir():创建一个目录,如果创建成功返回true,否则返回false(如果该目录已经存在将返回false)。4.使用File对象列出目录中的文件如果File对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录:①String[]list():用字符串形式返回目录下的全部文件。②File[]listFiles():用File对象形式返回目录下的全部文件。我们有时需要列出目录下指定类型的文件,比如.java、.txt等扩展名的文件。可以使用File类的下述两个方法,列出指定类型的文件:①String[]list(FilenameFilterobj):该方法用字符串形式返回目录下的指定类型的所有文件。②File[]listFiles(FilenameFilterobj):该方法用File对象返回目录下的指定类型所有文件。5.文件的创建与删除当使用File类创建一个文件对象后,例如Filef=newFile(c:\\myletter,letter.txt);如果c:\myletter目录中没有名字为letter.txt文件,文件对象f调用方法createNewFile()可以在c:\myletter目录中建立一个名字为letter.txt的文件。文件对象调用方法delete()可以删除当前文件。任务二读写文件数据1.文件字节输入流FileInputStreamFileInputStream类称为文件字节输入流类。文件字节输入流按字节读取文件中的数据。为了创建FileInputStream类的对象,可以使用下列构造方法:①FileInputStream(Stringname)②FileInputStream(Filefile)第一个构造方法使用给定的文件名name创建一个FileInputStream对象。第二个构造器使用File对象创建FileInputStream对象。构造方法参数指定的文件称作输入流的源,输入流通过使用read()方法从输入流读出源中的数据。输入流的唯一目的是提供通往数据源的通道,程序可以通过这个通道读取数据,read方法给程序提供一个从输入流中读取数据的基本方法。read方法的格式如下:intread();read方法从输入流中顺序读取单个字节的数据。该方法返回字节(0~255之间的一个整数),读取位置到达文件末尾,则返回-1。read方法还有其它一些形式。这些形式能使程序把多个字节读到一个字节数组中:intread(byteb[]);intread(byteb[],intoff,intlen);其中,off参数指定read方法把数据存放在字节数组b中的什么地方样,len参数指定该方法将读取的最大字节数。上面所示的这两个read方法都返回实际读取的字节个数,如果它们到达输入流的末尾,则返回-1。2.FileOutputStream类与FileInputStream类相对应的类是FileOutputStream类。FileOutputStream提供了基本的文件写入能力。FileOutputStream类是OutputStream的子类,称为文件字节输出流。文件字节输出流按字节将数据写入到文件中。为了创建FileOutputStream类的对象,可以使用下列构造方法:FileOutputStream(Stringname)FileOutputStream(Filefile)第一个构造方法使用给定的文件名name创建一个FileOutputStream对象。第二个构造方法使用File对象创建FileOutputStream对象。构造方法参数指定的文件称作输出流的目的地,输出流通过使用write()方法把数据写入输出流到达目的地。FileOutputStream对象可以使用write方法把字节发送给输出流,write的用法如下:publicvoidwrite(byteb[]):写b.length个字节到输出流。publicvoidwrite(byteb[],intoff,intlen):从给定字节数组中起始于偏移量off处写len个字节到输出流,参数b是存放了数据的字节数组。FileOutStream流顺序地写文件,只要不关闭流,每次调用writer方法就顺序地向文件写入内容,直到流被关闭。如果输出流要写入数据的文件已经存在,该文件中的数据内容就会被刷新;如果要写入数据的文件不存在,该文件就会被建立。3.文件字符输入流FileReader为了创建FileReader类的对象,可以使用下列构造方法:FileReader(Stringname)FileReader(Filefile)第一个构造方法使用给定的文件名name创建一个FileReader对象。第二个构造方法使用File对象创建FileReader对象。构造方法参数指定的文件称作输入流的源,输入流通过使用read()方法从输入流读出源中的数据。以下是read方法的功能解释:intread():输入流调用该方法从源中读取一个字符,该方法返回一个整数(0~65535之间的一个整数,Unicode字符值),如果未读出字符就返回-1。intread(charb[]):输入流调用该方法从源中读取b.length个字符到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。intread(charb[],intoff,intlen):输入流调用该方法从源中读取len个字符并存放到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。其中,off参数指定read方法从符数组b中的什么地方存放数据。4.文件字符输出流FileWriterFileWriter提供了基本的文件写入能力。FileWriter类是Writer的子类,称为文件字符输出流。文件字符输出流按字符将数据写入到文件中。为了创建FileWriter类的对象,可以使用下列构造方法:FileWriter(Stringname)FileWriter(Filefile)第一个构造方法使用给定的文件名name创建一个FileWriter对象。第二个构造方法使用File对象创建FileWriter对象。构造方法参数指定的文件称作输出流的目的地,输出流通过使用write()方法把字符数据写入输出流到达目的地。FileWriter对象可以使用write方法把字符数据写入输出流,write的用法如下:publicvoidwrite(charb[]):写b.length个字符到输出流。publicvoidwrite(charb[],intoff,intlen):从给定字符数组中起始于偏移量off处写len个字符到输出流,参数b是存放了数据的字符数组。voidwrite(Stringstr):把字符串中的全部字符写入到输出流。voidwrite(Stringstr,intoff,intlen):从字符串str中起始于偏移量off处写len个字符到输出流。5.BufferedReader类BufferedReader类创建的对象称为缓冲输入流,该输入流的指向必须是一个Reader流,称作BufferedReader流的底层流,底层流负责将数据读入缓冲区,BufferedReader流的源就是这个缓冲区,缓冲输入流再从缓冲区中读取数据。BufferedReader的构造方法是:BufferedReader(Readerin)BufferedReader流能够读取文本行,方法是readLine(),当从文件中读不到数据时返回null。6.BufferedWriter类类似地,可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写到目的地,FileWriter流称作BufferedWriter的底层流,BufferedWriter流将数据写入缓冲区,底层流负责将数据写到最终的目的地。例如:FileWritertofile=newFileWriter(hello.txt);BufferedWriterout=newBufferedWriter(tofile);BufferedReader流调用方法:write(Stringstr)write(Strings,intoff,intlen)把字符串s或s的一部分写入到目的地。SmartUpload是由网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。SmartUpload组件可以从网站上自由下载,与本教材的同步的文件中有SmartUpload.jar。在使用时只需将SmartUpload.jar拷贝到Tomcat的ROOT\WEB-INF\lib目录下。利用该组件进行文件上传与下载常用的类有几个,下面将逐一介绍。1.com.jspsmart.upload.SmartUpload类这个类主要完成文件的上传与下载操作。常用的方法有:①publicSmartUpload():是类的构造方法,用于创建SmartUpload对象。②publicfinalvoidinitialize(javax.servlet.jsp.PageContextpageContext):其中,pageContext为JSP页面内置对象,完成初始化功能。③publicvoidupload():上传文件数据。对于上传操作,第一步执行initialize方法,第二步就要执行这个方法。④publicFilesgetFiles()

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功