文件操作
目的:
1、继续掌握JavaBean的概念。
2、掌握JSP的输入和输出流。
3、掌握在页面中读写文件中的数据。
4、掌握如何进行文件操作。
网页上的文件操作管理,可以实现文件上传功能和下载功能,显示文件列表和读取文件内容功能。
(1)实现文件上传功能。
(2)实现列出服务目录所有文件和子目录的功能,并且能够显示指定文件内容功能。
(3)实现文件下载功能。
部分代码如下:
public String getReadContent() { try { File file = new File(fileDir, fileName); FileReader in = new FileReader(file); BufferedReader inTwo = new BufferedReader(in); StringBuffer stringbuffer = new StringBuffer(); String s = null; while ((s = inTwo.readLine()) != null) { stringbuffer.append("\n" + s); } String temp = new String(stringbuffer); readContent = "<TextArea rows=10 cols=62>" + temp + "</TextArea>"; } catch (IOException e) { readContent = "<TextArea rows=8 cols=62>" + "请选择一个文件" + "</TextArea>"; } return readContent; }
文件下载的处理
<% response.reset(); try{ String str=request.getParameter("name1"); //获得响应客户的输出流: str=new String(str.getBytes("iso8859-1"),"gb2312"); String path = request.getRealPath("/"); path = path.substring(0,path.lastIndexOf("\\")); path = path + "\\"; File fileLoad=new File(path,str);//下载文件位置: response.reset(); OutputStream o=response.getOutputStream(); BufferedOutputStream bos=new BufferedOutputStream(o); byte b[]=new byte[500]; //输出文件用的字节数组,每次发送500个字节到输出流: response.setHeader("Content-disposition","attachment;filename="+new String(str.getBytes("gb2312"),"iso8859-1")); //客户使用保存文件的对话框 response.setContentType("application/x-tar");//通知客户文件的MIME类型: long fileLength=fileLoad.length();//通知客户文件的长度: String length=String.valueOf(fileLength); response.setHeader("Content_Length",length); FileInputStream in=new FileInputStream(fileLoad);//读取文件,并发送给客户下载: int n=0; while((n=in.read(b))!=-1) { bos.write(b,0,n); } bos.close(); }catch(Exception e){System.out.print(e);} response.reset(); %>
文件上传的处理
<% int MAX_SIZE = 102400 * 102400; //定义上载文件的最大字节 String rootPath; // 创建根路径的保存变量 DataInputStream in = null; //声明文件读入类 FileOutputStream fileOut = null; String remoteAddr = request.getRemoteAddr(); //取得客户端的网络地址 String serverName = request.getServerName(); //获得服务器的名字 String realPath = request.getRealPath("/");//取得互联网程序的绝对地址 realPath = realPath.substring(0, realPath.lastIndexOf("\\")); rootPath = realPath + "\\"; //创建文件的保存目录 out.println("上传文件保存目录为" + rootPath); String contentType = request.getContentType(); //取得客户端上传的数据类型 try { if (contentType.indexOf("multipart/form-data") >= 0) { in = new DataInputStream(request.getInputStream()); //读入上传的数据 int formDataLength = request.getContentLength();//取得客户端上传的数据的长度 if (formDataLength > MAX_SIZE) { out.println("<P>上传的文件字节数不可以超过" + MAX_SIZE + "</p>"); return; } byte dataBytes[] = new byte[formDataLength]; //保存上传文件的数据 int byteRead = 0; int totalBytesRead = 0; while (totalBytesRead < formDataLength) { //上传的数据保存在byte数组 byteRead = in.read(dataBytes, totalBytesRead, formDataLength); totalBytesRead += byteRead; } String file = new String(dataBytes); //根据byte数组创建字符串 String saveFile = file.substring(file.indexOf("filename=\"") + 10); //取得上传的数据的文件名 saveFile = saveFile.substring(0, saveFile.indexOf("\n")); saveFile = saveFile.substring( saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\"")); int lastIndex = contentType.lastIndexOf("="); String boundary = contentType.substring(lastIndex + 1, contentType.length());//取得数据的分隔字符串 String fileName = rootPath + saveFile; int pos; pos = file.indexOf("filename=\""); pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; int boundaryLocation = file.indexOf(boundary, pos) - 4; int startPos = ((file.substring(0, pos)).getBytes()).length;//取得文件数据的开始的位置 int endPos = ((file.substring(0, boundaryLocation)) .getBytes()).length; //取得文件数据的结束的位置 File checkFile = new File(fileName); //检查上载文件是否存在 if (checkFile.exists()) { out.println("<p>" + saveFile + "文件已经存在.</p>"); } File fileDir = new File(rootPath);//检查上载文件的目录是否存在 if (!fileDir.exists()) { fileDir.mkdirs(); } fileOut = new FileOutputStream(fileName); //创建文件的写出类 fileOut.write(dataBytes, startPos, (endPos - startPos)); //保存文件的数据 fileOut.close(); out.println("<P><font color=red size=5>" + saveFile + "文件成功上传.</font></p>"); } else { String content = request.getContentType(); out.println("<p>上传的数据类型不是是multipart/form-data</p>"); } } catch (Exception ex) { throw new ServletException(ex.getMessage()); } %>
详细的代码在附件(file.zip)中给出。
相关推荐
### 知识点详解 #### 一、二级目录结构及其...通过以上分析可以看出,本实习通过模拟实现采用了二级目录结构的磁盘文件系统中的文件操作,不仅加深了对文件系统原理的理解,还锻炼了数据结构设计和算法实现的能力。
本文将重点讨论如何在Codesys工程中使用ST语言进行TXT文件的操作,特别是写文件操作。 首先,要实现写文件功能,我们需要理解ST语言中的文件处理函数。Codesys提供了`FILE_OPEN`, `FILE_WRITE`, `FILE_CLOSE`等函数...
可易文件操作日志监控 是一个功能非常实用的软件,它可以对文件文件夹进行操作记录,例如:新建、修改、重命名、删除、复制等都可以实现记录下来,把这些记录显示到一个表格中,包含操作时间、操作类型、文件所在...
**Qt文件操作示例程序** Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的API用于处理各种文件操作。在这个示例程序中,我们可能会看到如何在Qt中进行基本的文件读写、文件操作监控以及进度条的...
编写带缓存的文件操作类 从执行体程序库中的CLLogger类可知,通过缓存要写入文件中的数据,能够提高读写磁盘的性能 请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数...
CANoe/CAPL 文件操作脚本是用于自动化处理CANoe环境中的配置、数据记录和分析的编程工具。CANoe是一款广泛应用于汽车电子系统的诊断、测试和测量的软件,而CAPL(CANoe Application Programming Language)是CANoe内...
C语言文件操作及函数大全 2.文件操作函数: (1)文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen("文件名","使用文件方式"); 其中,“文件指针名”必须是被说明为FILE 类型的...
大学本科操作系统实验 《磁盘文件操作模拟C语言》,花了两天的时间调试。
原数据存放在StreamingAsset中,首次启动复制到persistentDataPath,以后进行更新和读取都在persistentDataPath中使用File进行文件操作。需要恢复书序的时候从StreamingAsset中获取即可。
易语言文件操作类模块源码,文件操作类模块,取对象,取驱动器集合,追加路径,取驱动器名称,取父文件夹名称,取文件名,取不带扩展名的文件名,取扩展名,取完整路径名,取临时文件名,驱动器是否存在,文件是否存在,文件夹是否...
Noip 文件操作精讲 Noip 文件操作是编程语言中最基本也是最重要的一部分,涉及到文件的输入输出操作。无论是 C 语言还是 C++ 语言,文件操作都是必不可少的。下面将对 Noip 文件操作进行详细的讲解。 文件操作的...
Java文件操作封装类
PHP 写的一个简单文件操作类,支持 PHP4 PHP5
Linux 操作系统文件和目录操作报告 Linux 操作系统中的文件类型可以...在 Linux 操作系统中,文件操作命令非常丰富,包括 touch、cp、mv、rm、cat、find 等命令。这些命令可以帮助用户高效地管理和操作文件和目录。
C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#...
文件IO 文件操作 操作文件 标准IO和文件IO 文件IO是计算机系统中最基本的输入/输出操作之一,它允许程序访问和操作文件。文件IO可以分为两大类:标准IO和文件IO。标准IO是指使用标准输入输出流来读取和写入文件,而...
本项目“C++使用hookapi监控文件操作程序”正是基于这一技术,用于实现对文件系统事件的实时监控。下面将详细介绍相关的知识点。 首先,`hookapi`是指Windows API中的钩子(Hook)机制。钩子是一种让程序能够监视...
本课程设计的主题是“文件操作的实现”,这涉及到使用汇编语言来处理计算机中的文件系统,包括打开、读取、写入和关闭文件等基本操作。以下是关于这个主题的详细知识讲解。 一、汇编语言基础 汇编语言是一种符号化...
C语言中的文件操作是编程中常见且至关重要的部分,它允许程序员与外部存储设备交互,进行数据的读取和写入。在ANSI C中,文件操作主要通过两种方式进行:流式文件操作和I/O文件操作。本文将重点讨论流式文件操作,...
顾名思义,主要介绍C语言的文件操作函数,无须多言