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 }