利用Servlet删除硬盘中的文件

一个网站的后台管理系统中要实现上传资源(文件资源保存在服务器硬盘上,名称、简介等相关信息保存到数据库中)和删除资源(删除资源时既要删除数据库中的记录又要从服务器硬盘中删除文件)两项功能,其中把文件上传到服务器硬盘上并把相关信息保存到数据库中,那再简单不过了,这里就不再赘述,利用Servlet从硬盘中删除文件倒是有些要注意的地方,详见代码及注释:

JSP页面中的主要相关代码为:(略去了其他次要代码)

<%--

略去了的代码

--%>

<jsp:useBean id="src" class="com.ehang.beans.SrcInfoBean" scope="page"/>

<%--

略去了的代码

--%>

</tr>

       <tr align="center" valign="middle">

    <td width="40%" height="22">资源名称</td>

    <td width="16%">资源大小</td>

    <td >删除</td>

</tr>

<%

    ResultSet rs=src.getResult();

    int i=0;

    while(rs.next()){

    String id=rs.getString("src_id");

    String url=rs.getString("src_url");

    if(i >= (intPage-1)*PageNumbers && i < intPage*PageNumbers)

              {

%>

<tr>

    <td align="left">&nbsp;&nbsp;&nbsp;<%=rs.getString("src_name")%></td>

    <td align="center"><%=rs.getString("src_size") %></td>

    <td><div align="center">

          <form name="form" action="srcDel.do" method="post">

             <input type="hidden" name="id" value="<%=id %>"/>

             <input type="hidden" name="url" value="<%=url %>"/>

             <input type="submit" value="删除" />

          </form>

        </div>

    </td>

</tr>

<%

              }

    i++;

    }

%>

<%--

这部分为控制分页的代码,已略去

--%

Servlet代码和解释如下:

package com.ehang.servlets;

import java.io.File;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.*;

import com.ehang.beans.SrcInfoBean; //导入用到的javabean

/**

* @author 黄泽元

*        2009-05-05

*/

public class SrcDelServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       String id = request.getParameter("id"); // jsp页面传来的id,从数据库中//删除相关记录时用到

       String url = request.getParameter("url");// jsp页面的隐藏域中参数,文件//的相对路径,从硬盘中删除文件时用到

       String newURL = null;

       if (id != null && !id.equals("")) {

           SrcInfoBean del = new SrcInfoBean();

           del.setSrcId(id);

           /**

           * 其实以下几行实现字符替换和文件删除的代码可写在一个类中,在这里调用即可

           * 接收过来的参数url为相对路径,形如upload/20090506/200905060607002.rar

           * 遍历并替换字符串,把其中的斜杠替换为反斜杠

           */

           int size = url.length() - 1;

           for (int i = 0; i < size; i++)

              newURL = url.replace("/", "//");

           String indexDir = this.getServletContext().getRealPath("/admin"); // 获取文件夹admin的绝对路径,形如../admin

           String filepath=indexDir+"//"+newURL; //文件全名,包含各层目录和扩展名

           if (del.delIsDone()) { // delIsDoneJavaBean中判断从数据库中删除记录//是否成功的方法

              File file = new File(filepath);// 下面执行从硬盘中删除文件的操作

              if (file.exists() && file.isFile()) {

                  if (file.canWrite())

                     file.delete();

              }

              // 流程控制代码,这里略去

              ……

           }……

       } ……

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       doGet(request, response);

    }

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值