JSP纸制教案(6)_第1页
JSP纸制教案(6)_第2页
JSP纸制教案(6)_第3页
JSP纸制教案(6)_第4页
JSP纸制教案(6)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

JSP纸制教案(6) 第六章对文件的操作6.1File类?数据流类实现文件的顺序读写。 RandomAessFile类实现文件的随机读写。 他们都不能对文件的属性进行访问。 使用File类,可以访问文件属性信息,但是,它不提供读写文件的方法。 下面列出File类的构造方法和实例方法1.File类有三个构造方法?File(String filename)?File(String directoryPath,String filename)?File(File f,String filename)其中,filename指文件名,directoryPath指文件所在的目录,f指文件的目录对象。 2.实用方法 (1)属性操作pubic StringgetName()获取文件名public StringgetPath()获取文件路径public StringgetAbsolutePath()获取文件绝对路径public longlength()获取文件的长度(单位是字节)public StringgetParent()获取文件的父目录public FilegetParentFile()获取文件的父目录public longlastModified()获取文件最后修改时间(时间是从1970年午夜至文件最后修改时刻的毫秒数)public booleancanRead()判断文件是否是可读的public booleancanWrite()判断文件是否可被写入public booleanexits()判断文件是否存在public booleanisFile()判断是不是一个正常文件public booleanisDirectroy()判断是不是一个目录public booleanisHidden()判断文件是不是隐藏文件 (2)文件操作public booleanrenameTo(File dest)给文件换名public booleandelete()删除文件 (3)目录操作public booleanmkdir()创建目录public Stringlist()以字符串形式列出目录public FilelistFiles()以File对象形式列出目录6.1.1获得文件信息例子6.1在e:/test/6目录下,创建一个文件”new.txt”,然后测试该文件的属性。 程序结构程序名ex6_1.jsp关键代码File f1=new File(E:/test/6,new.txt);f1.createNewFile();/创建文件new.txt 文件new.txt存在吗?: 6.1.2创建目录和文件例子6.2在e:/test目录下创建一个子目录Students,在Students目录下创建文件new.doc。 问题分析以e:/test和Students为参数,创建一个File对象,然后调用mkdir()方法,创建目录。 程序结构程序名ex6_2.jsp程序算法1.以e:/test和Students为参数,创建一个File对象:dir2.调用mkdir()方法,创建目录Students。 3.调用createNewFile()方法,创建文件new.doc关键代码File dir=new File(E:/test,Students);dir.mkdir()File newFile=new File(dir,new.doc);newFile.createNewFile();6.1.3列出文件和子目录例子6.3列出c盘根目录下的所有子目录和文件。 问题分析以”c:/”为参数,创建一个对象,然后调用listFiles()方法,获得该对象包含的所有目录和文件。 然后使用条件语句将文件和目录分开。 程序结构程序名ex6_3.jsp程序算法1以c:/为参数,创建对象:dir2.获取对象dir所包含的对象数组(文件和目录构成的对象):file3.输出所包含的子目录4.输出所包含的文件关键代码File dir=new File(c:/);File file=dir.listFiles();if(filei.isDirectory()6.1.4列出指定类型的文件例子6.4列出e:/test/6目录下所有的jsp文件。 程序结构程序名ex6_4.jsp程序算法1定义类FileJSP,该类实现接口FilenameFilter的aept(File dir,String name)方法,该方法用文件后缀为str为过滤器,对dir目录下的文件name进行筛选。 2以e:/test/6为参数,构造目录对象dir。 3以jsp为文件后缀,构造文件筛选条件file_jsp4以筛选条件file_jsp对目录对象dir进行筛选,得到文件数组file_name。 5输出文件数组。 6.1.5删除文件和目录例子6.5删除e:/test/Students目录下的文件“new.doc”,然后删除目录“Students”。 程序结构程序名ex6_5.jsp程序算法1.以文件名E:/test/Students/new.doc为参数创建File对象:f2.以目录名E:/test/Students为参数创建File对象:dir3.删除文件f.delete()4.删除目录dir.delete()/必须为非空目录6.2数据流概述?数据流是对各种流的总称。 每个流本身是一个类。 我们可以使用数据流读文件或写文件。 输入流只能读文件不能写文件,输出流只能写文件不能读文件。 1数据流概念我们把数据的输入流和数据输出流统称为数据流(这里说的输入输出是以程序为参考点而言)。 2数据流分类?按照数据流动方向分为输入流和输出流?按照数据流动成分分为字节流、字符流、缓冲流、数据流、对象流等等。 数据流模型为了便于理解数据流工作方式,对数据流进行抽象,得到数据流模型如图6-1所示。 在程序中,使用输入流,可从键盘或文件中读取数据;使用输出流,可向显示器、打印机或文件中传输数据。 6.3字节流?字节流有两个超类,也是两个抽象类,它们是字节输入流(InputStream)和字节输出流(OutputStream)。 InputStream类是所有字节输入流的超类;OutputStream类是所有字节输出流的超类。 1.InputStream类层次图2.OutputStream类层次图字节流有多个子类,能直接对文件进行读或写的子类有FileInputStream和键盘文件程序输入流输出流显示器打印机文件InputStream FileInputStreamPipedInputStream FilterInputStreamObjectInputStream SequenceInputStreamByteArrayInputStream StringBufferInputStreamPushbackInputStream BufferedInputStreamDataInputStream OutputStreamFileOutputStream PipedOutputStreamFilterOutputStream ObjectOutputStreamByteArrayOutputStream PrintStreamBufferedOutputStream DataOutputStreamFileOutputStream下面是它们的构造方法1FileInputStream类的构造方法?FileInputStream(String name)?FiIeInputStream(File file)其中,name为文件名,file为文件类File对象,即可以以文件名或File对象构造文件输入流对象。 通过文件输入流对象读文件。 FileOutputStream类的构造方法?FileOutputStream(String name)throws FileNotFoundException?FileOutputStrearm(File file)throws FileNotFoundException?FileOutputStrearm(String name,boolean append)throws FileNotFoundException其中,name为文件名,file为File对象,append表示文件的写入方式。 append的值为false时,为重写方式,即要写入的内容从文件开头写入,覆盖以前的文件内容;当append的值为true时,为添加方式,即要写入的内容添加到文件的尾部。 append的默认值是false。 可以以文件名或File对象构造文件输出流对象,通过文件输出流对象写文件。 6.3.1用类FileInputStream读文件例子6.6读文件e:/read.txt的内容,并输出到客户端。 问题分析以文件名e:/read.txt为参数构造File对象,再以File对象为参数构造输入流,循环读取输入流,并输出到客户端。 程序结构程序名ex6_6.jsp程序算法1.以文件名e:/read.txt为参数,构造文件对象f2.以文件对象f为参数,构造输入流in3.每次从in中读取n个字节,保存在数组b中4.n等于-1时结束循环,否则,把数组b以字符串的方式输出到客户端,重复步骤3。 6.3.2用类FileOutputStream写文件例子6.7把从客户端输入的文本,添加到服务器的e:/write.txt文件中。 问题分析创建一个表单接受客户端的文本输入。 以文件名e:/write.txt为参数创建一个输出流,把客户端输入的文本写入该输出流中。 程序结构程序名ex6_7.jsp程序算法1.创建一个表单,包含一个文本框,文本框名是boy2.获取文本框数据,保存在字符串str中3.将str编码为字节数组buffer4.以e:/write.txt为参数,创建一个输出流:wf5.将buffer写入到输出流wf中。 关键代码6.4字节缓存流由于使用文件字节流读/写文件效率不高,在实际应用中,常常使用字节缓存流来读/写文件。 字节缓存流有字节缓存输入流(BufferedInputStream)和字节缓存输出流(BufferedOutputStream)。 常用构造方法BufferedInputStream类的构造方法?BufferedInputStream(InputStream in)?BufferedInputStream(InputStream in,int size)BufferedOutputStream类的构造方法?BufferedOutputStream(OutputStream out)?BufferedOutputStream(OutputStream out,int size)其中,in是字节输入流对象,out是字节输出流对象,size是缓冲区大小。 实际应用中,为了提高文件读写的效率,FileInputStream流经常和BufferedInputStream流配合使用,FileOutputStream流经常和BufferedOutputStream流配合使用。 下面是构造字节缓存流的方法。 1.构造字节缓存输入流的步骤假设需要使用字节缓存流读文件A.txt,则需要对文件A.txt进行两次封装第一步构造文件字节输入流FileInputStream in=new FileInputStream(A.txt)第二步构造缓存输入流BufferedInputStream inbuffer=BufferedInputStream(in)这时,我们就可以让inbuffer调用read()方法读取文件(A.txt)的内容Inbuffer读取文件的过程中,会进行缓存处理,提高读取的效率构造字节缓存输出流的步骤假设需要使用字节缓存流写文件B.txt,则需要对文件B.txt进行两次封装第一步构造文件字节输出流FileOutputStream out=new FileOutputStream(B.txt)第二步构造缓存输出流BufferedOutputStream outbuffer=BufferedOutputStream(out)这时,outbuffer调用write()方法向文件(B.txt)写入内容时会进行缓存处理提高写入的效率需要注意的是,写入完毕后,须调用flush()方法将缓存中的数据存入文件6.4.1用类BufferedInputStream读文件例子6.8用字节缓存读文件e:/read.txt的内容,并输出到客户端。 程序结构程序名ex6_8.jsp程序算法1.以文件名e:/read.txt为参数,构造文件对象f2.以文件对象f为参数,构造文件字节输入流in3.以文件字节输入流in为参数,构造缓存输入流bufferin4.每次从bufferin中读取n个字节,保存在数组c中5.n等于-1时结束循环,否则,把数组c以字符串的方式输出到客户端,重复步骤4。 程序代码6.4.2用类BufferedOutputStream写文件例子6.9把客户端输入的数据写入到e:/write.txt文件中。 程序结构程序名ex6_9.jsp程序算法1创建一个表单,包含一个文本框,文本框名是boy2获取文本框数据,保存在字符串str中3将字符串str编码为字节数组buffer4以e:/write.txt为参数,创建一个输出流:outFile5以outFile为参数,创建缓冲输出流bufferout6将buffer写入到缓冲输出流bufferout中。 程序代码6.5字符流?前面我们学习了使用字节流读/写文件,但是字节流不能直接操作Unicode字符,所以java提供了字符流由于汉字在文件中占用2个字节,如果使用字节流读写文件会出现乱码现象,采用字符流就可以避免乱码在Unicode字符集中,一个汉字被看作一个字符?字符流有两个超类,也是两个抽象类字符输入流(Reader)和字符输出流(Writer)Reader类是所有字符输入流的父类;Writer类是所有字符输出流的父类。 字符流有多个子类,能直接对文件进行读或写的子类有文件字符输入流(FileReader)和文件字符输出流(FileWriter)下面是它们的构造方法。 FileReader类的构造方法?public FileReader(File file)throws?public FileReader(String name)throws其中,name为文件名,file为File对象,即可以用文件名或File对象构造文件输入流对象。 通过文件输入流对象读文件。 FileWriter类的构造方法?public FileWriter(File file)throws IOException?public FileWriter(String name)throws IOException?public FileWriter(File file,boolean append)throws IOException?public FileWriter(String name,boolean append)throws IOException其中,name为文件名,file为File对象,append表示文件的写入方式。 append的值为false时,为重写方式,即要写入的内容从文件开头写入,覆盖以前的文件内容;当append的值为true时,为添加方式,即要写入的内容添加到文件的尾部。 append的默认值是false。 可以以文件名或File对象构造文件输出流对象,通过文件输出流对象写文件。 6.5.1用类FileReader读文件例子6.10在客户端显示文件e:/read.txt的内容。 程序结构程序名ex6_10.jsp程序算法1.以文件名“e:/read.txt”为参数,构造文件对象f2.以文件对象f为参数,构造字符输入流in3.每次从in中读取n个字符,保存在字符数组b中4.n等于-1时,结束循环,否则,把数组b以字符串的方式输出到客户端,重复步骤3。 6.5.2用类FileWriter写文件例子6.11把从客户端输入的文本,添加到服务器的e:/write.txt文件中。 程序结构程序名ex6_11.jsp程序算法1.创建一个表单,包含一个文本框,文本框名是boy2.获取文本框数据,保存在字符串str中3.将str进行编码4.以“e:/write.txt”为参数,创建一个输出流:wf5.将str写入到输出流wf中。 6.6字符缓存流由于使用FileReader类和FileWriter类读写文件效率不高,在实际应用中,常常使用字符缓存流来读写文件。 字符缓存流有字符缓存输入流(BufferedReader)和字符缓存输出流(BufferedWriter)。 常用构造方法1BufferedReader类的构造方法BufferedReader(Reader in)BufferedReader(Reader inint size)2.BufferedWriter类的构造方法BufferedWriter(Writer out)BufferedWriter(Writer outint size)其中,in是字符输入流对象,out是字符输出流对象,size是缓冲区大小。 实际应用中,为了提高文件读写的效率,FileReader流经常和BufferedReader流配合使用;FileWriter流经常和BufferedWriter流配合使用。 下面是构造字符缓存流的方法1.构造字符缓存输入流的步骤假设需要使用字符缓存流读文件A.txt,则需要对文件A.txt进行两次封装第一步构造文件字符输入流FileReader in=new FileReader(A.txt)第二步构造字符缓存输入流BufferedReader inbuffer=B

温馨提示

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

评论

0/150

提交评论