zoukankan      html  css  js  c++  java
  • 开发工具类-简单文件操作相关

    与文件简单操作相关的一个工具类

    package org.dennisit.util;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.log4j.Logger;
    
    
    /**
     * Description: Simple File Handler Util , This Util rely on class<code>Logger</code> in package porg.apache.log4j.
     *
     * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-5 
     *
     * com.parser.util.FileUtil.java
     * 
     */
    
    public class FileUtil {
        
        public static final Logger log = Logger.getLogger(FileUtil.class);
    
        
        /**
         * 
         * 创建文件,如果文件所在的目录不存在,就创建目录,然后床架文件
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-14 上午09:46:29
         *                
         * @param fileName    待创建的文件名
         * @return            文件是否创建成功
         */
        public static boolean createFile(String fileName){
            File file = new File(fileName);
            //判断目录是否存在
            if(!file.getParentFile().exists()){
                file.getParentFile().mkdirs();
            }
            //判断文件是否存在
            if(file.exists()){
                return true;
            }
            try{
                if(file.createNewFile()){
                    return true;
                }else{
                    return false;
                }
            }catch(Exception e){
                log.info("[File Create  Error]",e);
                return false;
            }
        }
        
        /**
         * 根据串值对象,创建文件才
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-14 上午09:48:51
         *                
         * @param fileName    
         *                         文件名
         * @param str        
         *                         要写入的文件内容
         * @param append    
         *                         <dl>文件写入的方式,追加还是替换
         *                             <dd>true值表示在原来内容的基础上记性内容追加</dd>
         *                             <dd>false值表示清空原来内容,重新写入</dd>
         *                         </dl>
         * @return
         */
        public static boolean createFile(String fileName,String str,boolean append){
            boolean ret = false;
            try{
                if(createFile(fileName)){
                    FileOutputStream  fileOutputStream = new FileOutputStream(fileName,append);
                    fileOutputStream.write(str.getBytes());
                    fileOutputStream.close();
                    ret = true;
                }
            }catch (Exception e){
                log.info("[File Write Error]	" + str, e );
                ret = false;
            }
            
            return ret;
        }
        
        /**
         * 
         * 根据流创建文件
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-14 上午09:53:00
         *                
         * @param fileName
         *                         文件名称
         * @param inputStream
         *                         输入流
         * @param append        <dl>文件写入的方式,追加还是替换
         *                             <dd>true值表示在原来内容的基础上记性内容追加</dd>
         *                             <dd>false值表示清空原来内容,重新写入</dd>
         *                         </dl>
         * @return
         */
        public static boolean createFile(String fileName, InputStream inputStream,boolean append){
            boolean ret = false;
            try{
                if(createFile(fileName)){
                    FileOutputStream  fileOutputStream = new FileOutputStream(fileName,append);
                    byte[] buffer = new byte[4096];
                    int n_bytes;
                    while ( (n_bytes = inputStream.read(buffer)) != -1 ) {
                        fileOutputStream.write(buffer, 0, n_bytes);
                        fileOutputStream.flush();
                    }                
                    fileOutputStream.close();
                    ret = true;
                }
            }catch (Exception e){
                log.info("文件写入失败:" + fileName, e );
                ret = false;
            }
            
            return ret;
        }
        
    
        /**
         * 
         * 根据文件路径获取路径下的文件名
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-14 上午09:54:35
         *                
         * @param path
         * @return                返回文件夹/文件名的list集合,只是文件名,不包含路径
         * @throws Exception
         */
        public static List<String> fileNameList(String path) throws Exception{
            List<String> list =  new ArrayList<String>();
            File file = new File(path);
            if( file == null || !file.exists() ) 
                throw new Exception("File (" + path + ") is not Found");
            for ( File f : file.listFiles() ) 
                list.add(f.getName());
            return list;
        }
        
        
        
        /**
         * 
         * 复制文件功能
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-14 上午10:08:17
         *                
         * @param originalFileName
         *                             原始文件路径
         * @param destinationFileName
         *                             目标文件路径
         * @return
         */
        public static boolean copyFile(String originalFileName,String destinationFileName){
            boolean ret = true;
            if(originalFileName == null || destinationFileName == null){
                ret = false;
            }
            try{
                File sourceFile = new File(originalFileName);
                File destinationFile = new File(destinationFileName);
                
                //判断源文件是否存在
                if(!sourceFile.exists()){
                    log.info("Original File (" + originalFileName + ") Nod Found ." );
                    return false;
                }
                
                //创建目标文件
                if(!createFile(destinationFileName)){
                    log.info("Target File (" + destinationFileName +") Create Error ." );
                    return false;
                }
                
                if(copySingleFile(sourceFile, destinationFile)){                
                    log.info("Copy File (" + originalFileName + ") to ("  + destinationFileName +")");
                }else{
                    ret = false;
                    log.info("Copy File (" + originalFileName + ") to ("  + destinationFileName +") ERROR ");            
                }
            }catch (Exception e){
                log.info("Copy File ERROR ! File Name is : " + originalFileName, e );
                ret = false;
            }
            return ret;
        }
        
        
        /**
         * 
         * 复制文件的实际处理类
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-14 上午10:08:17
         *                
         * @param sourceFileName
         *                             文件原来名称
         * @param destinationFileName
         *                             目标文件名称
         * @return
         */
        private static boolean copySingleFile(File sourceFile,File destinationFile){
            boolean copyFlg = false;
            FileInputStream fileInputStream = null;
            DataInputStream dataInputStream = null;
            FileOutputStream fileOutputStream = null;
            DataOutputStream dataOutputStream = null;
            try{
                fileInputStream = new FileInputStream(sourceFile);
                dataInputStream = new DataInputStream(new BufferedInputStream(fileInputStream));
                fileOutputStream = new FileOutputStream(destinationFile);
                dataOutputStream = new DataOutputStream(new BufferedOutputStream(fileOutputStream));
                byte[] b = new byte[1024];
                int len;
                while((len = dataInputStream.read(b)) != -1){
                    dataOutputStream.write(b,0,len);
                }
                
                dataOutputStream.flush();
            }catch(Exception e){
                log.info("File Copy ERROR",e);
            }finally{
                try{
                    if(dataInputStream != null){
                        dataInputStream.close();
                    }
                    if(dataOutputStream != null){
                        dataOutputStream.close();
                    }
                }catch (Exception e){
                    
                }
            }
            //判断文件大小是否相同
            if(sourceFile.length() == destinationFile.length()){
                copyFlg = true;
            }
            
            return copyFlg;
        }
        
    
        
        /**
         * 删除文件
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-9-14 上午10:10:22
         *                
         * @param fileName
         * @return
         */
        public boolean deleteFile(String fileName){
            File file = new File(fileName);
            if(!file.exists()){
                log.info("Delete File Not Found :" + fileName );
                return false;
            }
            try{
                file.delete();
            }catch(Exception e){
                log.info("Delete File Error",e);
                return false;
            }
            return true;
        }
        
        
        public static void main(String[] args) throws Exception {
            copyFile("F:/BaiDu Yum/苏若年-HtmlParser篇Filter应用说明.pdf", "D:/test.pdf");
            createFile("F:/tmp/test.txt");
            createFile("F:/tmp/test.txt","simple File Util", true);
        }
    }
  • 相关阅读:
    170325 第六章应用层 域名系统 DNS
    文件操作(Linux系统调用)
    进程优先级,进程nice值和%nice的解释
    常用的操作系统进程调度算法
    fork函数返回值问题
    进度条的实现
    find命令
    单链表的插入排序
    B树
    排序
  • 原文地址:https://www.cnblogs.com/dennisit/p/3320834.html
Copyright © 2011-2022 走看看