zoukankan      html  css  js  c++  java
  • FileUtils删除文件的工具类

      

      前提是知道文件在哪个文件夹下面然后到文件夹下面删除文件,如果文件夹也需要传参数需要对下面方法进行改造。

       ( 需要借助于commons-io.jar和ResourceUtils.java  )

      

    1.DeleteFileUtil.java工具类

    package com.tyust.common;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.commons.io.FilenameUtils;
    
    /**
     * 根据文件的名字到对应的文件夹下面删除对应的文件
     * 
     * @author QiaoLiQiang
     * @time 2018年2月6日下午2:22:40
     */
    public class DeleteFileUtil {
        /**
         * 删除文件(因为一个文件可能存在pdf,doc,docx三种格式,因此需要删除)
         * 
         * @param fileName
         * @return
         */
        public static boolean deleteFile(String fileName) {
            if (fileName == null) {
                return false;
            }
            String dir = ResourcesUtil.getValue("path", "file");// 获取文件的基本目录
            String baseName = FilenameUtils.getBaseName(fileName);// 获取文件的基本名字
            try {
                FileUtils.forceDeleteOnExit(new File(dir + baseName + ".pdf"));
                FileUtils.forceDeleteOnExit(new File(dir + baseName + ".doc"));
                FileUtils.forceDeleteOnExit(new File(dir + baseName + ".docx"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return true;
        }
    
        /**
         * 到存放图片的文件夹下面删除图片
         * 
         * @param fileName
         * @return
         */
        public static boolean deletePicture(String fileName) {
            if (fileName == null) {
                return false;
            }
            String dir = ResourcesUtil.getValue("path", "picture");// 获取文件图片的基本目录
            try {
                FileUtils.forceDeleteOnExit(new File(dir + fileName));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return true;
        }
    
        public static void main(String[] args) {
            DeleteFileUtil.deleteFile("ef0c4d250561413e9777fb439e8fbc27.doc");
            System.out.println("sss");
        }
    }

      解释:

    ResourcesUtil是读取配置文件中的目录路径,FilenameUtils(位于commons-io.jar)是获取传来的文件的基本名字,文件夹下面根据基本名字删除pdf、doc、docx文件。
    ResourcesUtil.java 读取.properties文件中的目录路径
    package com.tyust.common;
    
    
    
    import java.io.Serializable;
    import java.text.MessageFormat;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Locale;
    import java.util.ResourceBundle;
    import java.util.Set;
    
    /**
     * 读取properties文件的工具类
     * @author QiaoLiQiang
     * @time 2018年2月5日下午4:28:18
     */
    public class ResourcesUtil implements Serializable {
    
        private static final long serialVersionUID = -7657898714983901418L;
    
        /**
         * 系统语言环境,默认为中文zh
         */
        public static final String LANGUAGE = "zh";
    
        /**
         * 系统国家环境,默认为中国CN
         */
        public static final String COUNTRY = "CN";
        private static Locale getLocale() {
            Locale locale = new Locale(LANGUAGE, COUNTRY);
            return locale;
        }
    
        /**
         * 根据语言、国家、资源文件名和key名字获取资源文件值
         * 
         * @param language
         *            语言
         * 
         * @param country
         *            国家
         * 
         * @param baseName
         *            资源文件名
         * 
         * @param section
         *            key名字
         * 
         * @return*/
        private static String getProperties(String baseName, String section) {
            String retValue = "";
            try {
                Locale locale = getLocale();
                ResourceBundle rb = ResourceBundle.getBundle(baseName, locale);
                retValue = (String) rb.getObject(section);
            } catch (Exception e) {
                e.printStackTrace();
                // TODO 添加处理
            }
            return retValue;
        }
    
        /**
         * 通过key从资源文件读取内容
         * 
         * @param fileName
         *            资源文件名
         * 
         * @param key
         *            索引
         * 
         * @return 索引对应的内容
         */
        public static String getValue(String fileName, String key) {
            String value = getProperties(fileName,key);
            return value;
        }
    
        public static List<String> gekeyList(String baseName) {
            Locale locale = getLocale();
            ResourceBundle rb = ResourceBundle.getBundle(baseName, locale);
    
            List<String> reslist = new ArrayList<String>();
    
            Set<String> keyset = rb.keySet();
            for (Iterator<String> it = keyset.iterator(); it.hasNext();) {
                String lkey = (String)it.next();
                reslist.add(lkey);
            }
    
            return reslist;
    
        }
    
        /**
         * 通过key从资源文件读取内容,并格式化
         * 
         * @param fileName
         *            资源文件名
         * 
         * @param key
         *            索引
         * 
         * @param objs
         *            格式化参数
         * 
         * @return 格式化后的内容
         */
        public static String getValue(String fileName, String key, Object[] objs) {
            String pattern = getValue(fileName, key);
            String value = MessageFormat.format(pattern, objs);
            return value;
        }
    
        public static void main(String[] args) {
            System.out.println(getValue("resources.messages", "101",new Object[]{100,200}));
            
            
            //根据操作系统环境获取语言环境
            /*Locale locale = Locale.getDefault();
            System.out.println(locale.getCountry());//输出国家代码
            System.out.println(locale.getLanguage());//输出语言代码s
            
            //加载国际化资源(classpath下resources目录下的messages.properties,如果是中文环境会优先找messages_zh_CN.properties)
            ResourceBundle rb = ResourceBundle.getBundle("resources.messages", locale);
            String retValue = rb.getString("101");//101是messages.properties文件中的key
            System.out.println(retValue);
            
            //信息格式化,如果资源中有{}的参数则需要使用MessageFormat格式化,Object[]为传递的参数,数量根据资源文件中的{}个数决定
            String value = MessageFormat.format(retValue, new Object[]{100,200});
            System.out.println(value);
    */
    
        }
    }

    path.properties

    #the directory of environment file to save
    file=F:/sbgl/file/
    picture=F:/sbgl/picture/

    最后附一个自己封装的删除文件的完整的工具类:

    package cn.xm.jwxt.utils;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.commons.io.FilenameUtils;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.*;
    import java.util.Locale;
    import java.util.ResourceBundle;
    
    /**
     * @Author: qlq
     * @Description 文件处理类
     * @Date: 22:59 2018/4/9
     */
    public class FileHandleUtil {
        /******S   封装的读取properties文件****************/
        /**
         * 系统语言环境,默认为中文zh
         */
        public static final String LANGUAGE = "zh";
    
        /**
         * 系统国家环境,默认为中国CN
         */
        public static final String COUNTRY = "CN";
    
        private static String getProperties(String baseName, String section) {
            String retValue = "";
            try {
                Locale locale = new Locale(LANGUAGE, COUNTRY);
                ResourceBundle rb = ResourceBundle.getBundle(baseName, locale);
                retValue = (String) rb.getObject(section);
            } catch (Exception e) {
                e.printStackTrace();
                // TODO 添加处理
            }
            return retValue;
        }
        /**
         * 通过key从资源文件读取内容
         *
         * @param fileName
         *            资源文件名
         *
         * @param key
         *            索引
         *
         * @return 索引对应的内容
         */
        public static String getValue(String fileName, String key) {
            String value = getProperties(fileName,key);
            return value;
        }
        /******E   封装的读取properties文件****************/
    
    
        /**********S  保存文件相关操作**************/
        /**
         * 配置虚拟路径上传文件到本地磁盘
         * @param f  需要上传的文件
         * @param fileName    保存到磁盘的文件名
         * @param pathKey    资源文件中的键 path.properties
         */
        public static void uploadFileToDisk(File f,String fileName,String pathKey){
            //从资源文件中读取文件的基本目录
            String basePath = ResourcesUtil.getValue("path", pathKey);
            //获取文件的后缀
            String sufix = FilenameUtils.getExtension(fileName);
            //获取文件的前缀
            String prefix = FilenameUtils.getBaseName(fileName);
            //保存到硬盘的文件的完整路径
            String dir = basePath+fileName;
            try{
                InputStream streamIn = new FileInputStream(f);
                OutputStream streamOut = new FileOutputStream(new File(dir));
                int bytesRead=0;
                byte[] byffer = new byte[8192];
                while((bytesRead=streamIn.read(byffer,0,8192))!=-1){
                    streamOut.write(byffer, 0, bytesRead);
                }
                streamIn.close();
                streamOut.flush();
                streamOut.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //如果文件是doc或者docx文件将文件转为pdf存一份到服务器
            if("doc".equals(sufix)||"docx".equals(sufix)){
                try {
    //                Word2PdfUtil.word2pdf(dir, basePath+prefix+".pdf");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**********E  保存文件相关操作**************/
    
    
    
    
    
        /******************S  删除文件相关操作********/
        /**
         *删除word(有可能后缀是doc,docx,或者转换后的pdf文件)
         * @param propertiesKey    path.properties文件中的key(确定目录)
         * @param fileName     需要删除的文件的名字(确定删除哪个文件)
         * @return    删除结果
         */
        public static boolean deleteWordOrPdfFile(String propertiesKey,String fileName) {
            if (fileName == null) {
                return false;
            }
            String dir = FileHandleUtil.getValue("path", propertiesKey);// 获取文件的基本目录
            String baseName = FilenameUtils.getBaseName(fileName);// 获取文件的基本名字(借助commons-io包读取文件基本名称)
            try {
                FileUtils.deleteQuietly(new File(dir + baseName + ".pdf"));
                FileUtils.deleteQuietly(new File(dir + baseName + ".doc"));
                FileUtils.deleteQuietly(new File(dir + baseName + ".docx"));
            } catch (Exception e) {
                e.printStackTrace();
            }
            return true;
        }
        /**
         *删除普通的文件(jpg,word,pdf)
         * @param propertiesFileName        properties文件的名称(确定读取哪个properties文件)
         * @param propertiesKey    properties文件中的key(确定目录)
         * @param fileName     需要删除的文件的名字(确定删除哪个文件)
         * @return    删除结果
         */
        public static boolean deletePlainFile(String propertiesFileName,String propertiesKey,String fileName) {
            if (fileName == null) {
                return false;
            }
            String dir = FileHandleUtil.getValue(propertiesFileName, propertiesKey);// 获取文件的基本目录
            try {
                //删除文件
    //            FileUtils.forceDeleteOnExit(new File(dir + fileName));
                FileUtils.deleteQuietly(new File(dir + fileName));
            } catch (Exception e) {
                e.printStackTrace();
            }
            return true;
        }
        /****************E  删除文件相关操作**************/
    
    
    
        /*******  S针对SptingMVC的上传文件的处理  *************/
        /**
         * 专门针对SpringMVC的文件上传操作
         * @param multipartFile 文件参数
         * @param propertiesKey  需要读取的path里面的key
         * @param fileName  文件名字,比如:    ce5bd946fd43410c8a26a6fa1e9bf23c.pdf
         * @return 返回值是最后的文件名字,如果是word需要转成pdf,1.doc返回值就是1.pdf
         */
        public static String uploadSpringMVCFile(MultipartFile multipartFile,String  propertiesKey,String fileName) throws Exception {
            String fileDir = FileHandleUtil.getValue("path", propertiesKey);// 获取文件的基本目录
            //1.将文件保存到指定路径
            multipartFile.transferTo(new File(fileDir+fileName));//保存文件
            //2.根据文件后缀判断文件是word还是pdf,如果是word需要转成pdf,其他的话不做处理
            String fileNameSuffix = FilenameUtils.getExtension(fileName);//调用io包的工具类获取后缀
            if("doc".equals(fileNameSuffix)||"docx".equals(fileNameSuffix)){//如果后缀是doc或者docx的话转为pdf另存一份
                String fileNamePrefix = FilenameUtils.getBaseName(fileName);//获取文件前缀名字
                Word2PdfUtil.word2pdf(fileDir+fileName,fileDir+fileNamePrefix+".pdf");//进行word转换pdf操作
                fileName = fileNamePrefix+".pdf";//并将文件的名字换成新的pdf名字
            }
            return fileName;
        }
        /*******  E针对SptingMVC的上传文件的处理  *************/
    
    
    
    
    
    
    }

    保存word的时候依赖于word转pdf:

    package cn.xm.jwxt.utils;
    
    
    
    import java.io.File;
    
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;
    /**
     * word转pdf工具类
     * @author QiaoLiQiang
     * @time 2018年1月5日下午7:16:12
     */
    public class Word2PdfUtil {
        static final int wdFormatPDF = 17;// PDF 格式   
        public static void main(String[] args) throws Exception {
              String source1 = "C:\Users\liqiang\Desktop\sbgl.docx";
              String target1 = "C:\Users\liqiang\Desktop\sbgl.pdf";
              Word2PdfUtil.word2pdf(source1, target1);
        }
        
        /**
         * 实现转换word文档为PDF文档
         * @param docFileName doc文件全路径(路径+文件名)
         * @param toFileName PDF文件全路径(路径+文件名)
         * @throws Exception
         */
        public static boolean word2pdf(String docFileName,String toFileName) throws Exception {   
            ComThread.InitSTA();
            System.out.println("启动Word...");
            
            long start = System.currentTimeMillis();     
            ActiveXComponent app = null; 
            Dispatch doc = null; 
            
            try {     
                app = new ActiveXComponent("Word.Application");     
                app.setProperty("Visible", new Variant(false)); 
                Dispatch docs = app.getProperty("Documents").toDispatch();   
                doc = Dispatch.call(docs,  "Open" , docFileName).toDispatch(); 
                
                System.out.println("打开文档..." + docFileName); 
                System.out.println("转换文档到PDF..." + toFileName);
                
                File tofile = new File(toFileName);     
                if (tofile.exists()) {     
                    tofile.delete();     
                }     
                
                Dispatch.call(doc,     
                              "SaveAs",     
                              toFileName,     
                              wdFormatPDF);     
                
                long end = System.currentTimeMillis();     
                System.out.println("转换完成..用时:" + (end - start) + "ms."); 
     
     
            } catch (Exception e) {     
                System.out.println("========Error:文档转换失败:" + e.getMessage());  
                return false;
            } finally { 
                try {
                    Dispatch.call(doc,"Close",false); 
                    System.out.println("关闭文档"); 
                    if (app != null) {
                        app.invoke("Quit", 0);     
                    } 
    
                   ComThread.Release();
                } catch(Exception ex) {
                
                }
            }
            return true;
        }
    }
  • 相关阅读:
    hbase 2.0.2 分布式安装配置/jar包替换
    hive character '' not supported here
    request.getSession().getServletContext().getRealPath()的一些坑
    hive 自定义函数
    hive 导出数据的几种方式
    hive 分区表与数据产生关联的三种方式
    hive 日志配置/表头配置
    hive 3.1.0 安装配置
    zookeeper 客户端操作
    linux 循环读取文件的每一行
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/8422331.html
Copyright © 2011-2022 走看看