`
cping
  • 浏览: 31138 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

File处理工具

 
阅读更多
import java.io.BufferedInputStream;  
import java.io.BufferedOutputStream;  
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.OutputStream;  
import java.text.DateFormat;  
import java.text.MessageFormat;  
import java.util.ArrayList;  
import java.util.Date;  
import java.util.Enumeration;  
import java.util.List;  
import java.util.Locale;  
import java.util.StringTokenizer;  
import java.util.zip.ZipEntry;  
import java.util.zip.ZipFile;  
  
/** 
 *  
 * @author IBM 
 *  
 */  
  
public class FileUtil {  
      
    public static String dirSplit = "\\";//linux windows  
    /** 
     * save file accroding to physical directory infomation 
     *  
     * @param physicalDir 
     *            physical directory 
     * @param fname 
     *            file name of destination 
     * @param istream 
     *            input stream of destination file 
     * @return 
     */  
  
    public static boolean SaveFileByPhysicalDir(String physicalPath,  
            InputStream istream) {  
          
        boolean flag = false;  
        try {  
            OutputStream os = new FileOutputStream(physicalPath);  
            int readBytes = 0;  
            byte buffer[] = new byte[8192];  
            while ((readBytes = istream.read(buffer, 0, 8192)) != -1) {  
                os.write(buffer, 0, readBytes);  
            }  
            os.close();  
            flag = true;  
        } catch (FileNotFoundException e) {  
              
            e.printStackTrace();  
        } catch (IOException e) {  
          
            e.printStackTrace();  
        }  
        return flag;  
    }  
      
    public static boolean CreateDirectory(String dir){  
        File f = new File(dir);  
        if (!f.exists()) {  
            f.mkdirs();  
        }  
        return true;  
    }  
      
      
    public static void saveAsFileOutputStream(String physicalPath,String content) {  
          File file = new File(physicalPath);  
          boolean b = file.getParentFile().isDirectory();  
          if(!b){  
              File tem = new File(file.getParent());  
              // tem.getParentFile().setWritable(true);  
              tem.mkdirs();// 创建目录  
          }  
          //Log.info(file.getParent()+";"+file.getParentFile().isDirectory());  
          FileOutputStream foutput =null;  
          try {  
              foutput = new FileOutputStream(physicalPath);  
                
              foutput.write(content.getBytes("UTF-8"));  
              //foutput.write(content.getBytes());  
          }catch(IOException ex) {  
              ex.printStackTrace();  
              throw new RuntimeException(ex);  
          }finally{  
              try {  
                  foutput.flush();  
                  foutput.close();  
              }catch(IOException ex){  
                  ex.printStackTrace();  
                  throw new RuntimeException(ex);  
              }  
          }  
            //Log.info("文件保存成功:"+ physicalPath);  
         }  
  
      
      
     /** 
     * COPY文件 
     * @param srcFile String 
     * @param desFile String 
     * @return boolean 
     */  
    public boolean copyToFile(String srcFile, String desFile) {  
        File scrfile = new File(srcFile);  
        if (scrfile.isFile() == true) {  
            int length;  
            FileInputStream fis = null;  
            try {  
                fis = new FileInputStream(scrfile);  
            }  
            catch (FileNotFoundException ex) {  
                ex.printStackTrace();  
            }  
            File desfile = new File(desFile);  
  
            FileOutputStream fos = null;  
            try {  
                fos = new FileOutputStream(desfile, false);  
            }  
            catch (FileNotFoundException ex) {  
                ex.printStackTrace();  
            }  
            desfile = null;  
            length = (int) scrfile.length();  
            byte[] b = new byte[length];  
            try {  
                fis.read(b);  
                fis.close();  
                fos.write(b);  
                fos.close();  
            }  
            catch (IOException e) {  
                e.printStackTrace();  
            }  
        } else {  
            scrfile = null;  
            return false;  
        }  
        scrfile = null;  
        return true;  
    }  
  
    /** 
     * COPY文件夹 
     * @param sourceDir String 
     * @param destDir String 
     * @return boolean 
     */  
    public boolean copyDir(String sourceDir, String destDir) {  
        File sourceFile = new File(sourceDir);  
        String tempSource;  
        String tempDest;  
        String fileName;  
        File[] files = sourceFile.listFiles();  
        for (int i = 0; i < files.length; i++) {  
            fileName = files[i].getName();  
            tempSource = sourceDir + "/" + fileName;  
            tempDest = destDir + "/" + fileName;  
            if (files[i].isFile()) {  
                copyToFile(tempSource, tempDest);  
            } else {  
                copyDir(tempSource, tempDest);  
            }  
        }  
        sourceFile = null;  
        return true;  
    }  
  
    /** 
     * 删除指定目录及其中的所有内容。 
     * @param dir 要删除的目录 
     * @return 删除成功时返回true,否则返回false。 
     */  
    public boolean deleteDirectory(File dir) {  
        File[] entries = dir.listFiles();  
        int sz = entries.length;  
        for (int i = 0; i < sz; i++) {  
            if (entries[i].isDirectory()) {  
                if (!deleteDirectory(entries[i])) {  
                    return false;  
                }  
            } else {  
                if (!entries[i].delete()) {  
                    return false;  
                }  
            }  
        }  
        if (!dir.delete()) {  
            return false;  
        }  
        return true;  
    }  
      
      
      
    /** 
     * File exist check 
     * 
     * @param sFileName File Name 
     * @return boolean true - exist<br> 
     *                 false - not exist 
     */  
    public static boolean checkExist(String sFileName) {  
       
     boolean result = false;  
         
       try {  
           File f = new File(sFileName);  
         
           //if (f.exists() && f.isFile() && f.canRead()) {  
       if (f.exists() && f.isFile()) {  
            result = true;  
       } else {  
            result = false;  
       }  
       } catch (Exception e) {  
            result = false;  
       }  
             
        /* return */  
        return result;  
    }  
     
    /** 
     * Get File Size 
     * 
     * @param sFileName File Name 
     * @return long File's size(byte) when File not exist return -1 
     */  
    public static long getSize(String sFileName) {  
         
        long lSize = 0;  
         
        try {  
            File f = new File(sFileName);  
                     
                    //exist  
            if (f.exists()) {  
                if (f.isFile() && f.canRead()) {  
                 lSize = f.length();  
                } else {  
                 lSize = -1;  
                }  
                    //not exist  
            } else {  
                lSize = 0;  
            }  
       } catch (Exception e) {  
            lSize = -1;  
       }  
       /* return */  
       return lSize;  
    }  
     
 /** 
  * File Delete 
  * 
  * @param sFileName File Nmae 
  * @return boolean true - Delete Success<br> 
  *                 false - Delete Fail 
  */  
    public static boolean deleteFromName(String sFileName) {  
    
        boolean bReturn = true;  
    
        try {  
            File oFile = new File(sFileName);  
     
           //exist  
           if (oFile.exists()) {  
               //Delete File  
               boolean bResult = oFile.delete();  
               //Delete Fail  
               if (bResult == false) {  
                   bReturn = false;  
               }  
         
               //not exist  
           } else {  
      
           }  
     
      } catch (Exception e) {  
          bReturn = false;  
      }  
    
      //return  
      return bReturn;  
    }  
     
 /** 
  * File Unzip 
  * 
  * @param sToPath  Unzip Directory path 
  * @param sZipFile Unzip File Name 
  */  
 @SuppressWarnings("rawtypes")  
public static void releaseZip(String sToPath, String sZipFile) throws Exception {  
    
  if (null == sToPath ||("").equals(sToPath.trim())) {  
       File objZipFile = new File(sZipFile);  
       sToPath = objZipFile.getParent();  
  }  
  ZipFile zfile = new ZipFile(sZipFile);  
  Enumeration zList = zfile.entries();  
  ZipEntry ze = null;  
  byte[] buf = new byte[1024];  
  while (zList.hasMoreElements()) {  
  
       ze = (ZipEntry) zList.nextElement();  
       if (ze.isDirectory()) {  
        continue;  
       }  
      
       OutputStream os =  
       new BufferedOutputStream(  
       new FileOutputStream(getRealFileName(sToPath, ze.getName())));  
       InputStream is = new BufferedInputStream(zfile.getInputStream(ze));  
       int readLen = 0;  
       while ((readLen = is.read(buf, 0, 1024)) != -1) {  
           os.write(buf, 0, readLen);  
       }  
       is.close();  
       os.close();  
  }  
  zfile.close();  
 }  
   
 /** 
  * getRealFileName 
  * 
  * @param  baseDir   Root Directory 
  * @param  absFileName  absolute Directory File Name 
  * @return java.io.File     Return file 
  */  
 @SuppressWarnings({ "rawtypes", "unchecked" })  
private static File getRealFileName(String baseDir, String absFileName) throws Exception {  
    
  File ret = null;  
  
  List dirs = new ArrayList();  
  StringTokenizer st = new StringTokenizer(absFileName, System.getProperty("file.separator"));  
  while (st.hasMoreTokens()) {  
      dirs.add(st.nextToken());  
  }  
  
  ret = new File(baseDir);  
  if (dirs.size() > 1) {  
      for (int i = 0; i < dirs.size() - 1; i++) {  
          ret = new File(ret, (String) dirs.get(i));  
      }  
  }  
  if (!ret.exists()) {  
      ret.mkdirs();  
  }  
  ret = new File(ret, (String) dirs.get(dirs.size() - 1));  
  return ret;  
 }  
  
 /** 
  * copyFile 
  * 
  * @param  srcFile   Source File 
  * @param  targetFile   Target file 
  */  
 @SuppressWarnings("resource")  
 static public void copyFile(String srcFile , String targetFile) throws IOException  
  {  
    
   FileInputStream reader = new FileInputStream(srcFile);  
   FileOutputStream writer = new FileOutputStream(targetFile);  
  
   byte[] buffer = new byte [4096];  
   int len;  
  
   try  
   {  
       reader = new FileInputStream(srcFile);  
       writer = new FileOutputStream(targetFile);  
         
       while((len = reader.read(buffer)) > 0)  
       {  
           writer.write(buffer , 0 , len);  
       }  
   }  
   catch(IOException e)  
   {  
       throw e;  
   }  
   finally  
   {  
       if (writer != null)writer.close();  
       if (reader != null)reader.close();  
   }  
  }  
  
 /** 
  * renameFile 
  * 
  * @param  srcFile   Source File 
  * @param  targetFile   Target file 
  */  
 static public void renameFile(String srcFile , String targetFile) throws IOException  
  {  
   try {  
       copyFile(srcFile,targetFile);  
       deleteFromName(srcFile);  
   } catch(IOException e){  
       throw e;  
   }  
  }  
  
  
 public static void write(String tivoliMsg,String logFileName) {  
  try{  
       byte[]  bMsg = tivoliMsg.getBytes();  
       FileOutputStream fOut = new FileOutputStream(logFileName, true);  
       fOut.write(bMsg);  
       fOut.close();  
  } catch(IOException e){  
   //throw the exception        
  }  
  
 }  
 /** 
 * This method is used to log the messages with timestamp,error code and the method details 
 * @param errorCd String 
 * @param className String 
 * @param methodName String 
 * @param msg String 
 */  
 public static void writeLog(String logFile, String batchId, String exceptionInfo) {  
    
  DateFormat df = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.JAPANESE);  
    
  Object args[] = {df.format(new Date()), batchId, exceptionInfo};  
    
  String fmtMsg = MessageFormat.format("{0} : {1} : {2}", args);  
    
  try {  
     
   File logfile = new File(logFile);  
   if(!logfile.exists()) {  
    logfile.createNewFile();  
   }  
     
      FileWriter fw = new FileWriter(logFile, true);  
      fw.write(fmtMsg);  
      fw.write(System.getProperty("line.separator"));  
  
      fw.flush();  
      fw.close();  
  
  } catch(Exception e) {  
  }  
 }  
   
 public static String readTextFile(String realPath) throws Exception {  
     File file = new File(realPath);  
        if (!file.exists()){  
            System.out.println("File not exist!");  
            return null;  
      }  
      BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(realPath),"UTF-8"));     
      String temp = "";  
      String txt="";  
      while((temp = br.readLine()) != null){  
          txt+=temp;  
       }        
      br.close();  
     return txt;  
 }  
  
   
}  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics