hyy9512

导航

文件夹1. 复制文件夹

servlet复制本地文件夹

.jsp界面

 1   <form action="<%=basePath %>fileAction?method=files" method="get">
 2         <table>
 3             <tr>
 4                 <td>源文件夹:</td>
 5                 <td><input type="text" name="fromFiles" /></td>
 6             </tr>
 7             <tr>
 8                 <td>目标文件夹:</td>
 9                 <td><input type="text" name="toFiles"/></td>
10             </tr>
11             <tr>
12                 <td colspan="2">源文件夹内容:</td>
13             </tr>
14             <tr>
15                 <td colspan="2"><textarea id="filesContent"></textarea></td>
16             </tr>
17                 <tr>
18                 <td colspan="2"><input type="submit" value="复制"/></td>
19             </tr>
20                 <tr>
21                 <td colspan="2"><input type="hidden" name="method" value="files"/></td>
22             </tr>
23         </table>
24     </form>

.js代码

$("input[name='fromFiles']").blur(function(){
        var val=$("input[name='fromFiles']").val();
        if(val=='') {
            alert("源文件路径不能为空!");
        } else {
            var data={"method":"getFilesInfo","fromPath":val};
            var xmlhttp=getXmlhttp();
            xmlhttp.onreadystatechange=function() {
                if(xmlhttp.readyState==4 && xmlhttp.status==200) {
                    var files=eval("("+xmlhttp.responseText+")");
                    alert(xmlhttp.responseText);
                    var textarea=$("#filesContent");
                    textarea.empty();
                    var content="";
                    for(file in files) {
//                        if(files[file].indexOf(".")==-1)     //        没有该字符,说明是文件夹
                            content+=files[file]+"\n";
                    }
                    textarea.val(content);
                }
            };
            xmlhttp.open("POST","fileAction",true);
            xmlhttp.setRequestHeader("Content-Type","application/json");
             xmlhttp.send(JSON.stringify(data));
        }
    });

servlet层FileAction.java

 1 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
 2             throws ServletException, IOException {
 3         req.setCharacterEncoding("utf-8");
 4         resp.setCharacterEncoding("utf-8");
 5         resp.setContentType("text/html;charset=utf-8");
 6         PrintWriter out=resp.getWriter();
 7         String method=req.getParameter("method");
 8                 if(method.equals("files")) {
 9             
10             
11 //对文件夹的操作
12         /*
13          * 复制文件夹
14          */
15 //            1. 获取源路径
16             String fromPath=new String(req.getParameter("fromFiles").getBytes("ISO8859-1"),"UTF-8");
17             File fromFiles=new File(fromPath);
18 //            2. 获得源文件夹下的文件数组
19             File[] files=fromFiles.listFiles();
20 //            3. 获取存储的目标路径
21             String toPath=new String(req.getParameter("toFiles").getBytes("ISO8859-1"),"UTF-8");
22             File toFiles=new File(toPath);
23 //            4. 调用文件复制命令
24             copy(files, toFiles);
25         }
26     }
27  private void copy(File[] files, File toFiles) {
28 //        1.  判断该路径是否存在
29         if(!toFiles.exists()) 
30 //            如果该路径不存在
31             toFiles.mkdirs();                            //创建指定的目标路径
32         for(int i=0;i<files.length;i++) {        //遍历源文件夹生成的文件数组
33             if(files[i].isFile()) {                        //如果是文件
34                 try {
35                     FileInputStream fis = new FileInputStream(files[i]);                                                                        //根据源文件路径名创建文件输入流
36                     File newFile=new File(toFiles.getPath()+File.separator+files[i].getName());        //根据目标文件路径以及源文件夹中的文件名获得该文件在目标路径中的存储位置
37                     FileOutputStream fos=new FileOutputStream(newFile);                                        //根据目标文件路径名创建文件输出流
38                     int count;
39                     byte buffer[]=new byte[1024];
40                     while((count=fis.read(buffer))!=-1)  {
41                         for(int j=0;j<count;j++)
42                             fos.write(buffer[j]);
43                     }
44                     fos.close();
45                     fis.close();
46                 } catch (FileNotFoundException e) {
47                     e.printStackTrace();
48                 } catch (IOException e) {
49                     e.printStackTrace();
50                 }                                                
51             }
52             if(files[i].isDirectory())    {                //如果是文件
53                 File des=new File(toFiles.getPath()+File.separator+files[i].getName());
54                 des.mkdirs();
55                 copy(files[i].listFiles(),des);
56             }
57         }
58     } 

servlet层FileAction.java

 1 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
 2             throws ServletException, IOException {
 3         req.setCharacterEncoding("utf-8");
 4         resp.setCharacterEncoding("utf-8");
 5         resp.setContentType("text/html;charset=utf-8");
 6         PrintWriter out=resp.getWriter();
 7 //        第一步:解析json字符串得到json对象
 8         JSONObject data=this.getJsonObject(req);
 9 //        第二步:获取json对象中的键获得值
10         String method=data.getString("method");
11                     if(method.equals("getFilesInfo")) {
12             JSONObject message=new JSONObject();
13             String fromPath=data.getString("fromPath");
14             File file=new File(fromPath);
15             if(file.exists()) {
16 //                如果文件夹存在,则访问该文件夹获得文件夹目录并返回
17                 if(file!=null) {
18                     List<String> filesList=new ArrayList<String>();
19                     File[] files=file.listFiles();
20                     for(int i=0;i<files.length;i++) {
21 //                        判断是否是文件夹:files[i].isDirectory()?"文件夹\t":"文件\t"
22                         filesList.add(files[i].getName());
23                     }
24                     JSONArray jsonFiles=JSONArray.fromObject(filesList);
25                     out.write(jsonFiles.toString());
26                 } 
27             } else {
28                 message.put("message", "文件夹不存在,请更换文件夹路径!");
29                 out.write(message.toString());
30             }
31         } 

web.xml

1 <servlet>
2       <servlet-name>fileAction</servlet-name>
3       <servlet-class>servlet.FileAction</servlet-class>
4   </servlet>
5   <servlet-mapping>
6       <servlet-name>fileAction</servlet-name>
7       <url-pattern>/fileAction</url-pattern>
8   </servlet-mapping>

 

posted on 2017-12-16 16:27  hyy9512  阅读(588)  评论(0编辑  收藏  举报