hyy9512

导航

servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本

  1 package servlet;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.File;
  5 import java.io.FileInputStream;
  6 import java.io.FileNotFoundException;
  7 import java.io.FileOutputStream;
  8 import java.io.FileReader;
  9 import java.io.FileWriter;
 10 import java.io.IOException;
 11 import java.util.ArrayList;
 12 import java.util.Date;
 13 import java.util.HashMap;
 14 import java.util.List;
 15 import java.util.Map;
 16 
 17 import javax.servlet.http.HttpServlet;
 18 
 19 import net.sf.json.JSONArray;
 20 import net.sf.json.JSONObject;
 21 
 22 public class FileActions  extends HttpServlet {
 23     private static final long serialVersionUID = 1L;
 24     /*
 25      * 判断文件是否存在
 26      */
 27     public boolean fileIsExists(File file) {
 28         boolean bool=file.exists();
 29         return bool;
 30     }
 31     /*
 32      * 文件重命名
 33      */
 34     public boolean fileReName(String filePath, String newName) {
 35         File file=new File(filePath);
 36         boolean isExist=fileIsExists(file);
 37         boolean reName=false;
 38         if(isExist) {
 39             File newFile=new File(file.getParent()+File.separator+newName);
 40             reName=file.renameTo(newFile);
 41         } else {
 42             System.out.println("该文件不存在!");
 43         }
 44         return reName;
 45     }
 46     /*
 47      * 文件复制
 48      */
 49     public void copyFile(String filePath1,String filePath2) {
 50         File fromFile=new File(filePath1);
 51         File toFiles=new File(filePath2);
 52         boolean isExist1=fileIsExists(fromFile);
 53         if(isExist1) {
 54             try {
 55                 boolean isExist2=fileIsExists(toFiles);
 56                 if(!isExist2) 
 57                     toFiles.mkdir();
 58                 FileInputStream fis=new FileInputStream(fromFile);
 59                 File newFile=new File(toFiles.getPath()+File.separator+fromFile.getName());
 60                 FileOutputStream fos=new FileOutputStream(newFile);
 61                 int count;
 62                 byte[] buffer=new byte[1024];
 63                 while((count=fis.read(buffer))!=-1) {
 64                     for(int i=0;i<count;i++)
 65                         fos.write(buffer[i]);
 66                 }
 67             } catch (FileNotFoundException e) {
 68                 e.printStackTrace();
 69             } catch (IOException e) {
 70                 e.printStackTrace();
 71             }
 72         } else {
 73             System.out.println("该文件不存在!");
 74         }
 75     }
 76     /*
 77      * 获取文件信息,转成Json对象
 78      */
 79     public JSONObject getFileInfo(String filePath) {
 80         JSONObject message=new JSONObject();
 81         File file=new File(filePath);
 82         boolean isExist=fileIsExists(file);
 83         if(isExist) {
 84             if(!file.isFile()) {
 85                 message.put("message", "该路径不是文件!");
 86             } else {
 87                 message.put("message", "文件存在!");
 88                 Map<String, String> fileInfo=new HashMap<String, String>();
 89                 try {
 90                     fileInfo.put("文件名称", file.getName());
 91                     fileInfo.put("文件路径", file.getCanonicalPath());
 92                     fileInfo.put("上级目录",file.getParentFile().getParent());
 93                     fileInfo.put("隐藏",file.isHidden()?"隐藏":"显示");
 94                     fileInfo.put("只读属性", file.canWrite()?"可写":"不可写");
 95                     fileInfo.put("最后修改日期", new Date(file.lastModified()).toLocaleString());
 96                     fileInfo.put("文件长度", String.format("%#,.2fk", file.length()/1024.0));
 97                     JSONObject jsonFileInfo=JSONObject.fromObject(fileInfo);
 98                     message.put("属性", jsonFileInfo);
 99                 } catch (IOException e) {
100                     e.printStackTrace();
101                 }
102             }
103         } else {
104             message.put("message", "该文件不存在!");
105         }
106         return message;
107     }
108     /*
109      * 获取指定类型的文件
110      * 参数1:文件夹路径
111      * 参数2:指定的文件类型
112      */
113     public JSONArray getFileOneType(String filesPath, String type) {
114         File[] files=null;
115         CustomFilter fileFilter=new CustomFilter();
116         fileFilter.setExtentName(type);
117         File file=new File(filesPath);
118         if(file.isDirectory()) {
119             files=file.listFiles(fileFilter);
120         }
121         if(files!=null) {
122             List<Object[]> fileList=new ArrayList<Object[]>();
123             for(File f:files) {
124                 Object[] subFile={f.getName(), f.length(), new Date(f.lastModified()).toLocaleString()};
125                 fileList.add(subFile);
126             }
127             JSONArray jsonFile=JSONArray.fromObject(fileList);
128             return jsonFile;
129         } else {
130             return null;
131         }
132     }
133     /*
134      * 查找替换.txt中的文本
135      * 参数1: 文件路径
136      * 参数2: 要查找的字符串
137      * 参数3: 替换字符串
138      */
139     public boolean replaceFileStr(String path, String str, String con) {
140         try {
141             FileReader fr=new FileReader(path);
142             BufferedReader br=new BufferedReader(fr);
143             char[] data=new char[1024];
144             int rn=0;
145             StringBuilder sb=new StringBuilder();
146             while((rn=fr.read(data))>0) {
147                 String content=String.valueOf(data,0,rn);
148                 sb.append(content);
149             }
150             fr.close();
151              String contentStr=sb.toString().replace(str,con);
152              FileWriter font=new FileWriter(path);
153              font.write(contentStr.toCharArray());
154              font.close();
155              return true;
156         } catch (FileNotFoundException e) {
157             e.printStackTrace();
158              return false;
159         } catch (IOException e) {
160             e.printStackTrace();
161              return false;
162         }
163     }
164     
165 }

 以上为servlet层代码,下面为获取指定类型的文件需要用到的CustomFilter类

 1 package servlet;
 2 
 3 import java.io.File;
 4 import java.io.FileFilter;
 5 
 6 public class CustomFilter implements FileFilter {
 7     private String extentName;
 8     
 9     public String getExtentName() {
10         return extentName;
11     }
12 
13     public void setExtentName(String extentName) {
14         this.extentName = extentName;
15     }
16 
17     @Override
18     public boolean accept(File pathname) {
19         if(extentName==null || extentName.isEmpty()) 
20             return false;
21         if(!extentName.startsWith("."))
22             extentName="."+extentName;
23         extentName=extentName.toLowerCase();
24         if(pathname.getName().toLowerCase().endsWith(extentName))
25             return true;
26         return false;
27     }
28 
29 }

 

posted on 2017-12-17 14:58  hyy9512  阅读(525)  评论(0编辑  收藏  举报