使用计算机时经常会利用资源管理器对文件和目录进行管理,通过指定的路径进行文件和目录的打开、创建、删除、显示属性等操作。在本项目开发中,设计了一个简单的在线文件管理器,这是一个基于Web浏览器的文件管理程序。文件管理器允许用户使用浏览器来管理文件和目录,可以浏览指定路径下的目录、文件,也可以在指定路径下新建和删除文件或目录以及对其属性的获取。
对文件和目录进行管理,需要使用java.io包下的File类。File类的对象主要用来获取文件和目录本身的一些信息,其包含大量的方法,通过这些方法,可以获取路径、目录和文件的相关信息,并对它们进行创建、删除、改名等操作。
本次设计的文件管理器具有以下的功能:
1.浏览指定路径下的目录和文件属性;
2.创建指定路径下的目录和文件;
3.删除指定路径下的目录和文件。
效果图:
步骤说明
1、部分代码请参考——第十五篇JDBC操作数据库之Cookie技术。
2、在第十五篇基础上继续实现功能——JSP文件管理器。
一.loginUser.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page import="java.net.URLDecoder" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>用户登录</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="css/userStyle.css">
</head>
<body>
<%
String username = "";
String password = "";
//获取cookie数组
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length>0){
for(Cookie cookie : cookies){
//获取值
if(cookie.getName().equals("username")){
username = cookie.getValue();
System.out.println("loginCookie username: " + username);
}
if(cookie.getName().equals("password")){
password = cookie.getValue();
System.out.println("loginCookie password: " + password);
}
}
}
%>
<div class="border">
<div class="head">登录用户</div>
<div class="div1">
<ul>
<li><a href="registerUser.jsp"> 用户注册 |</a></li>
<li><a href="loginUser.jsp"> 用户登录 |</a> </li>
<li><a href="message.jsp"> 当前用户 |</a></li>
<li><a href="cookie.jsp"> 查看cookie |</a></li>
<li><a href="ExitLogin"> 退出登录 |</a></li>
<li><a href="file.jsp"> 文件管理 |</a></li>
</ul>
</div>
<div class="div2">
<form action="<%=request.getContextPath()%>/LoginUser" method="post" οnsubmit="return login(this)">
<table align="center" width="300" border="0">
<tr>
<td align="right">用户名:</td>
<td><input type="text" name="username" value="<%=username%>"></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input type="text" name="password" value="<%=password%>"></td>
</tr>
<tr>
<td colspan="2" align="center" height="50">
<input type="checkbox" name="isUseCookie">十天内记住我的登录状态
</td>
</tr>
<tr>
<td colspan="2" align="center" height="50">
<input type="submit" value="登录">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
二.file.jsp
1.首先判断用户是否已登录
2.默认路径----d:/
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page import="java.io.File" %>
<%@ page import="com.entity.User" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>显示文件和目录</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link rel="stylesheet" type="text/css" href="css/userStyle.css">
</head>
<body>
<div class="head">文件操作</div>
<div class="div1">
<ul>
<li><a href="registerUser.jsp"> 用户注册 |</a></li>
<li><a href="loginUser.jsp"> 用户登录 |</a> </li>
<li><a href="message.jsp"> 当前用户 |</a></li>
<li><a href="cookie.jsp"> 查看cookie |</a></li>
<li><a href="ExitLogin"> 退出登录 |</a></li>
<li><a href="file.jsp"> 文件管理 |</a></li>
</ul>
</div>
<div class="out">
<%
//获取提示信息
String info = String.valueOf(request.getAttribute("info"));
//如果提示信息不为空,则输出提示信息
if (info != "null") {
out.print(info);
}
//获取登录的用户信息
User user = (User) session.getAttribute("user");
//判断用户是否登录
if (user != null) {
%>
<h2>默认路径(不填写):d:/</h2>
<form action="manager.jsp" method="post">
<table>
<tr>
<td>文件/目录浏览</td>
<td>输入路径:</td>
<td><input type="text" name="catalog"></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
<br>
<table>
<tr>
<td>创建目录:</td>
<td>输入路径:</td>
<td><input type="text" name="path1"></td>
<td>输入目录名:</td>
<td><input type="text" name="name1"></td>
<td><input type="submit" value="创建"></td>
</tr>
<tr>
<td>创建文件:</td>
<td>输入路径:</td>
<td><input type="text" name="path2"></td>
<td>输入文件名:</td>
<td><input type="text" name="name2"></td>
<td><input type="submit" value="创建"></td>
</tr>
<tr>
<td>删除目录:</td>
<td>输入路径:</td>
<td><input type="text" name="path3"></td>
<td>输入目录名:</td>
<td><input type="text" name="name3"></td>
<td><input type="submit" value="删除"></td>
</tr>
<tr>
<td>删除文件:</td>
<td>输入路径:</td>
<td><input type="text" name="path4"></td>
<td>输入文件名:</td>
<td><input type="text" name="name4"></td>
<td><input type="submit" value="删除"></td>
</tr>
</table>
</form>
</div>
<%
} else {
out.print("<br>对不起,您还没有<a href='loginUser.jsp'>登录</a>!");
}
%>
</body>
</html>
三.manager.jsp
1.catalog默认"d:/"
2.路径path默认"d:/"
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page import="java.io.File" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>操作结果</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link rel="stylesheet" type="text/css" href="css/userStyle.css">
</head>
<body>
<%
String catalog = request.getParameter("catalog");
if (catalog == null || "".equals(catalog)) {
System.out.println(catalog);
catalog = "d:/";
}
File dir1 = new File(catalog);
File file[] = dir1.listFiles();
%>
<p>
<font color="#FF0000">当前路径下的目录有:</font>
<%
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory()) {
out.print("<br>" + file[i].toString());
}
}
%>
</p>
<font color="#FF0000">当前路径下的所有文件有:</font>
<p>
<%
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
out.print("<br>" + file[i].toString());
}
}
%>
</p>
<p>----------------------------------------------------</p>
<%
//定义数组,存储获取的值
String[] s = new String[8];
//获取对应的文本框文件或目录路径
s[0] = request.getParameter("path1");
s[1] = request.getParameter("name1");
s[2] = request.getParameter("path2");
s[3] = request.getParameter("name2");
s[4] = request.getParameter("path3");
s[5] = request.getParameter("name3");
s[6] = request.getParameter("path4");
s[7] = request.getParameter("name4");
for (int i = 0; i < s.length; i++) {
if (i % 2 == 0) {
if(s[i] == null || "".equals(s[i])){
s[i] = "d:/";
System.out.println("路径:" + s[i]);
}else{
System.out.println("路径:" + s[i]);
}
}
}
File dir2 = new File(s[0], s[1]);
File dir3 = new File(s[2], s[3]);
File dir4 = new File(s[4], s[5]);
File dir5 = new File(s[6], s[7]);
%>
<p>
<%=s[1]%><font color="#FF0000">目录是否创建成功?</font><%=dir2.mkdir()%>
</p>
<p>
<%=s[3]%><font color="#FF0000">文件是否创建成功</font><%=dir3.createNewFile()%>
</p>
<p>
<%=s[5]%><font color="#FF0000">目录是否删除成功?</font><%=dir4.delete()%>
</p>
<p>
<%=s[7]%><font color="#FF0000">文件是否删除成功?</font><%=dir5.delete()%>
</p>
</body>
</html>
四.页面效果
ok!