版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java Web开发,计算机系 孙杰,JSP开发实例与实践,7,本章内容 1. JSP文件操作和下载 2. JSP文件上传 3. JSP读取CheckBox的值,7.1 JSP的文件操作,1。File文件对象 File是java.io包的一部分,它代表一个文件或文件夹的引用。格式: File(String) 创建一个File对象,如果没有指定文件名,则创建一个文件夹。例如: File myfile=new File(“d:counter.txt”); 常用方法:exists()、delete()、mkdir(),2。读取文本文件 1)FileReader 读取字符流,逐个字符读取,格式: Fi
2、leReader txt=new FileReader(文件名) 例如: FileReader txt=new FileReader(“counter.txt”),2)BufferedReader 读取字符输入流,一次读取一行,格式: BufferedReader buff=new BufferedReader(Reader); 例如: BufferedReader buff=new BufferedReader(new FileReader(“counter.txt”); buff.close(); 注意: BufferedReader读取字符输入流,并高效率的缓存起来。,3。写入文本文件
3、BufferedWriter写入一个带缓冲的字符流。 格式: BufferedWriter(FileWriter) 例如: File tmpf=new File(“d:xy.txt”); BufferedWriter outf = new BufferedWriter(new FileWriter(tmpf); outf.write(“123”); outf.close();,文件操作实例,try String filestr=“d:/counter.dat; BufferedReader buff=new BufferedReader(new FileReader(filestr); lon
4、g tmp; String line; line=buff.readLine(); tmp=Long.parseLong(line); tmp+;,Long tmpint=new Long(tmp); application.setAttribute(visitor,tmpint); String counter=tmpint.toString(); File tmpf=new File(filestr); BufferedWriter outf = new BufferedWriter(new FileWriter(tmpf); outf.write(counter); outf.close
5、(); buff.close(); catch (Exception e) System.err.println(无法更新计数器:+e); ,4。流的方式处理文件 流(stream)代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型: 以字节为导向的stream 以Unicode字符为导向的stream,4。流的方式处理文件 1、以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型: 1) inputst
6、ream: 1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用 2) StringBufferInputStream:把一个String对象作为InputStream 3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作 4) PipedInputStream:实现了pipe的概念,主要在线程中使用 5) SequenceInputStream:把多个InputStream合并为一个InputStream 2) Outstream 1) ByteArrayOutputStream:把信息存入内存中的一个
7、缓冲区中 2) FileOutputStream:把信息存入文件中 3) PipedOutputStream:实现了pipe的概念,主要在线程中使用 4) SequenceOutputStream:把多个OutStream合并为一个OutStream,4。流的方式处理文件 2、以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。以Unicode字符为导向的stream包括下面几种类型: 1) InputStream 1) CharArrayReader:与ByteArrayInputStream对应 2) StringRead
8、er:与StringBufferInputStream对应 3) FileReader:与FileInputStream对应 4) PipedReader:与PipedInputStream对应 2) OutStream 1) CharArrayWrite:与ByteArrayOutputStream对应 2) StringWrite:无与之对应的以字节为导向的stream 3) FileWrite:与FileOutputStream对应 4) PipedWrite:与PipedOutputStream对应,4。流的方式处理文件 1)输入流格式: FileInputStream inStrea
9、m=new FileInputStream(String); 例如: FileInputStream inStream=new FileInputStream(“d:mylet.zip”);,4。流的方式处理文件 2)输出流格式: OutputStream toClient = response.getOutputStream(); 例如: OutputStream toClient = response.getOutputStream(); toClient.flush(); toClient.close();,7.1 JSP的文件操作,在JSP中,可以直接使用java代码进行各种文件的读写
10、,但是需要引入下面的包: java.io.*; 其他的代码不变化 需要注意的是,JSP如果从客户端获取数据或者文件,需要客户端的浏览器先把数据或者文件post给服务器,然后通过流的方式读取,即实现上传。,7.1 JSP的文件下载,在JSP中,文件下载就是读取服务器上的文件,然后以流的方式向客户端浏览器输出,JSP下载实例1: % String filename=,contexttype=; boolean hasfile=true; try InputStream inStream=null; inStream=new FileInputStream(“d:/mylet.zip”); Serv
11、letOutputStream sout = response.getOutputStream(); if (inStream=null) return;,文件下载实例-2,response.setContentType(APPLICATION/x-msdownload); response.setHeader(Content-Disposition,attachment; filename=+filename+); BufferedInputStream bis = new BufferedInputStream(inStream); BufferedOutputStream bos = n
12、ew BufferedOutputStream(sout); byte buff = new byte2048; int bytesRead; while(-1 != (bytesRead = bis.read(buff, 0, buff.length) bos.write(buff, 0, bytesRead); bis.close(); bos.flush(); catch(Exception e) e.printStackTrace(); finally %,7.2 JSP的文件上传,文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开
13、发的文件上传组件。 common-fileupload组件是著名的apache的一个开源项目之一,可以从/commons/fileupload/下载。用该组件可实现一次上传一个或多个文件,并可限制文件大小。,1。创建DiskFileUpload对象 1)格式: DiskFileUpload fu = new DiskFileUpload() 2)方法: setSizeThreshold(int):设置缓冲区大小 例如: fu.setSizeThreshold(102400); setRepositoryPath(path):设置临时目录 例如:f
14、u.setRepositoryPath(“c:temp”); parseRequest(request):得到所有文件。 例如:List fileItems = fu.parseRequest(request),2。具体实现步骤 步骤一:下载commons-fileupload-1.0.jar 注意存放位置! 步骤二:制作上传JSP页面,必须保证表单的ENCTYPE属性值 为multipart/form-data, 这样浏览器才能正确执行上传 文件的操作,3:编写上传文件的代码 DiskFileUpload fu = new DiskFileUpload(); / 设置缓冲区大小,这里是100
15、kb fu.setSizeThreshold(102400); String path = c:mfile; /存放上传文件的目录 fu.setRepositoryPath(path);,try List fileItems = fu.parseRequest(request); Iterator fileiterator = fileItems.iterator(); / 依次处理每一个文件 while(fileiterator.hasNext() FileItem fi = (FileItem) fileiterator.next(); /传送到服务器c:mfile目录 if (fi.getName().length()0) File fileName =new
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年题库岗位安全生产知识新人入职培训考核(含答案)
- 2026年安全生产知识黑龙江鸡西市(含答案)
- 2026年大一access题库(含答案)
- 2026年隔膜泵行业绿色制造创新模式研究报告
- 2026年水泥试验员模拟试题及答案详解
- 2026年小数点移动模拟试题及答案详解
- 2026年虚拟现实技术在工业制造中的应用报告
- 2026年人工智能在教育领域应用前景报告:智能化教学趋势及解决方案
- 2026年非标设备行业创新成果评估报告
- 2026年随州市曾都区公务员人员招聘笔试备考试题及答案详解
- DGTJ08-2065-2020 住宅二次供水技术标准 附条文说明
- 施工过程各阶段质量安全的保证措施
- 1.2数据的计算课件-高中信息技术必修一
- 数字音频处理器培训课件
- 《钢结构设计原理》课件 第6章 拉弯和压弯构件
- 《宫颈癌的早期诊断》课件
- 气道管理及呼吸支持
- 借款担保人协议书
- 人教版中考物理复习第三章物态变化教学课件
- DBJ52T 088-2018 贵州省建筑桩基设计与施工技术规程
- 看图猜词游戏规则模板
评论
0/150
提交评论