您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 第5章 JSP中的文件操作
JSP程序设计第5章配合JSP程序设计例子源代码一起使用普通高等教育“十一五”国家级规划教材JSP中的文件操作Powerpoint制作:耿祥义张跃平2主要内容•File类•字节流•字符流•RandomAccess流•文件上传•文件下载难点•RandomAccess流•文件上传关键实践•读写文件•加密文件第5章导读3第5章JSP中的文件操作有时服务器需要将用户提交的信息保存到文件或根据用户的要求将服务器上的文件的内容显示到用户端。JSP通过Java的输入输出流来实现文件的读写操作。4§5.1File类File对象用来获取文件本身的一些信息。例如文件所在的目录、文件的长度、文件读写权限等,不涉及对文件的读写操作。创建一个File对象的构造方法有3个:File(Stringfilename);File(StringdirectoryPath,Stringfilename);File(Filef,Stringfilename);55.1.1获取文件的属性File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件读写权限等,不涉及对文件的读写操作。publicStringgetName()——获取文件的名字。publicbooleancanRead()——判断文件是否是可读的。publicbooleancanWrite()——判断文件是否可被写入。publicbooleanexists()——判断文件是否存在。publiclonglength()——获取文件的长度(单位是字节)。publicStringgetAbsolutePath()——获取文件的绝对路径。publicStringgetParent()——获取文件的父目录。publicbooleanisFile()——判断文件是否是一个正常文件,而不是目录。例5-1P10965.1.2创建目录1.创建目录publicbooleanmkdir()File对象调用方法创建一个目录,如果创建成功就返回true,否则返回false。2.列出目录中的文件(如果File对象是一个目录)publicString[]list()用字符串形式返回目录下的全部文件。publicFile[]listFiles()用File对象形式返回目录下的全部文件。3.列出指定类型的文件publicString[]list(FilenameFilterobj)该方法用字符串形式返回目录下的指定类型的所有文件。publicFile[]listFiles(FilenameFilterobj)该方法用File对象返回目录下的指定类型的所有文件。例5-2,5-3,5-4P11075.1.3删除文件和目录File对象调用方法publicbooleandelete();可以删除当前对象代表的文件或目录。如果File对象表示的是一个目录,则该目录必须是一个空目录,删除成功将返回true。例5-5P1128§5.2使用字节流读写文件java.io包提供大量的流类。称InputStream类及其子类对象为字节输入流类,称OutputStream类及其子类对象为字节输出流。InputStream类的常用方法:intread()输入流调用该方法从源中读取单个字节的数据,该方法返回字节值(0~255之间的一个整数)。如果未读出字节就返回-1。intread(byteb[])输入流调用该方法从源中试图读取b.length个字节到字节数组b中,返回实际读取的字节数目。如果到达文件的末尾,则返回-1。intread(byteb[],intoff,intlen)输入流调用该方法从源中试图读取len个字节到字节数组b中,并返回实际读取的字节数目。如果到达文件的末尾,则返回-1。参数off指定从字节数组的某个位置开始存放读取的数据。voidclose()输入流调用该方法关闭输入流。longskip(longnumBytes)输入流调用该方法跳过numBytes个字节,并返回实际跳过的字节数目。OutputStream类的常用方法:voidwrite(intn)输出流调用该方法向输出流写入单个字节。voidwrite(byteb[])输出流调用该方法向输出流写入一个字节数组。voidwrite(byteb[],intoff,intlen)从给定字节数组中起始于偏移量off处取len个字节写入到输出流。voidclose()关闭输出流。95.2.1FileInputStream和FileOutputStream类FileInputStream类是InputStream的子类。构造方法:FileInputStream(Stringname)FileInputStream(Filefile)使用构造方法可能发生IOException异常。输入流通过调用read方法读出源中的数据。FileOutputStream是OutputStream类的子类。构造方法:FileOutputStream(Stringname)FileOutputStream(Filefile)使用构造方法可能发生IOException异常。输出流通过调用write方法把字节写入到目的地。105.2.2BufferedInputStream和BufferedOutputStream类FileInputStream流经常和BufferedInputStream流配合使用,FileOutputStream流经常和BufferedOutputStream流配合使用类配合使用提高读写效率。BufferedInputStream类的一个常用的构造方法是:BufferedInputStream(InputStreamin);读取文件A.txt常用下列方式:FileInputStreamin=newFileInputStream(A.txt);BufferedInputStreambufferRead=newBufferedInputStream(in);BufferedOutputStream类的一个常用的构造方法是:BufferedOutputStream(OutputStreamout);向文件B.txt写入字节常用下列方式:FileOutputStreamout=newFileOutputStream(B.txt);BufferedOutputStreambufferWriter=newBufferedOutputStream(out);例5-6P11411§5.3使用字符流读写文件字节流不能直接操作Unicode字符,所以Java提供了字符流。由于汉字在文件中占用2个字节,如果使用字节流,读取不当会出现乱码现象,采用字符流就可以避免这个现象。在Unicode字符中,一个汉字被看做一个字符。所有字符输入流类都是Reader(输入流)抽象类的子类。所有字符输出流都是Writer(输出流)抽象类的子类。Reader类中常用方法:intread()intread(charb[])intread(charb[],intoff,intlen)voidclose()longskip(longnumBytes)Writer类中常用方法:•voidwrite(intn)输出流写入一个字符。•voidwrite(charb[])向输出流写入一个字符数组。•voidwrite(charb[],intoff,intlength)•voidclose()关闭输出流。125.3.1FileReader和FileWriter类FileReader和FileWriter类是Reader和Writer的子类。FileReader构造方法:FileReader(Stringfilename)FileReader(Filefile)FileWriter构造方法:FileWriter(Stringfilename)FileWriter(Filefile)135.3.2BufferedReader和BufferedWriter类FileReader流经常和BufferedReader流配合使用;FileWriter流经常和BufferedWriter流配合使用。BufferedReader流还可以使用方法StringreadLine()读取一行;BufferedWriter流还可以使用方法voidwrite(Strings,intoff,intlength)将字符串s的一部分写入文件.newLine()向文件写入一个行分隔符。例5-7P11614§5.4RandomAccessFile类RandomAccessFile类既不是输入流类InputStream类的子类,也不是输出流类Outputstream类的子类。RandomAccessFile流的指向既可以作为源也可以作为目的地。RandomAccessFile类的两个构造方法:RandomAccessFile(Stringname,Stringmode)参数name用来确定一个文件名,给出创建的流的源(也是流的目的地)。参数mode取“r”(只读)或“rw”(可读写),决定创建的流对文件的访问权利。RandomAccessFile(Filefile,Stringmode)参数file是一个File对象,给出创建的流的源(也是流的目的地)。参数mode取“r”(只读)或“rw”(可读写),决定创建的流对文件的访问权利。创建对象时应捕获IOException异常。RandomAccessFile类的常用方法:getFilePointer()获取当前流在文件中的读写的位置length()获取文件的长度readByte()从文件中读取一个字节readDouble()从文件中读取一个双精度浮点值(8个字节)readInt()从文件中读取一个int值(4个字节)readLine()从文件中读取一个文本行readUTF()从文件中读取一个UTF字符串seek(longa)定位当前流在文件中的读写的位置write(byteb[])写b.length个字节到文件writeDouble(doublev)向文件写入一个双精度浮点值writeInt(intv)向文件写入一个int值writeUTF(Strings)写入一个UTF字符串例5-8P11915§5.5文件上传用户通过一个JSP页面上传文件给服务器时,该JSP页面必须含有File类型的表单,并且表单必须将ENCTYPE的属性值设成multipart/form-data。File类型表单如下所示:FORMaction=接受上传文件的页面method=postENCTYPE=multipart/form-dataInputtype=Filename=picture/FORMJSP引擎可以让内置对象request调用方法getInputStream()获得一个输入流,通过这个输入流读入用户上传的全部信息,包括文件的内容以及表单域的信息。例5-9,5-10P12316§5.6文件下载JSP内置对象response调用方法getOutputStream()可以获取一个指向用户的输出流,服务器将文件写入这个流,用户就可以下载这个文件了。当提供下载功能时,应当使用response对象向用户发送HTTP头信息,这样用户的浏览器就会调用相应的外部程序打开下载的文件,response调用setHeader方法添加下载头的格式如下:response.setHeader(Content-disposition,attachment;filename=下载的文件名字);例5-11P127
本文标题:第5章 JSP中的文件操作
链接地址:https://www.777doc.com/doc-3379892 .html