package common; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; import org.apache.struts.action.ActionServlet; import org.apache.struts.upload.FormFile; /** * <pre> * 文件基本操作类 * * 作成者 修改日期 修改内容 * ------- ----------- ---------- *</pre> */ public class Files { //***************李阳 start **************************** /** * 上传文件<br> * <br> * @param pUploadPath 上传到服务器上的文件路径 * @param pFilePath 要上传的文件路径 * @param pServlet ActionServlet对象 * @return String 上传到服务器上的文件名 * @throws Exception 发生错误的时候被抛出 */ public static String uploadFile(String pUploadPath, FormFile pFilePath, ActionServlet pServlet) throws Exception { byte[] buffer = new byte[8192]; int bytes = 0; // 取得输出文件地址 String dir = pServlet.getServletContext().getRealPath(pUploadPath); // 取得文件名 String fileName = ""; if(pFilePath.getFileName().indexOf(".")>0) { fileName = pFilePath.getFileName().substring(pFilePath.getFileName().lastIndexOf(".")); }else{ fileName = pFilePath.getFileName(); } Timestamp timestamp = new Timestamp(System.currentTimeMillis()); // 取得系统时间 DateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS"); // 取得上传后的文件名 String loadName = format.format(timestamp) + fileName; // 判断上传后文件名长度是否大于30 if (loadName.length() > 30){ // 大于,则取得前30个字符作文件名。 loadName = loadName.substring(0, 30); } File path = new File(dir); // 路径不存在时 if (!path.exists()) { // 创建路径 path.mkdirs(); } // 取得输入文件流 InputStream inputStream = pFilePath.getInputStream(); // 取得向指定地址输出文件的输出流 OutputStream outputStream = new FileOutputStream(dir + "/" + loadName); // 循环输入文件 while ((bytes = inputStream.read(buffer, 0, 8192)) != -1) { outputStream.write(buffer, 0, bytes); } outputStream.flush(); // 关闭输出流 outputStream.close(); // 关闭输入流 inputStream.close(); return loadName; } /** * 删除文件<br> * <br> * @param pFilePath 文件路径 * @param pFileName 文件名称 * @param pServlet ActionServlet对象 * @return boolean 返回操作是否成功标志 * @throws Exception 发生错误的时候被抛出 */ public static boolean deleteFile(String pFilePath, String pFileName, ActionServlet pServlet) throws Exception { // 取得要删除文件的路径 String dir = pServlet.getServletContext().getRealPath(pFilePath); // 取得要删除文件的路径及名称 String file = dir + "/" + pFileName; // 创建File类对象 File delFile = new File(file); // 删除文件 return delFile.delete(); } }