FileHelper-文件操作工具


import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import javax.servlet.http.HttpServletResponse;

public class FileHelper {

         static File file ;     

         /**

          * @删除文件

          * input 输入 output 输出

          * */

         public static boolean deleteFile(String url){                  

                   boolean flag = false;                  

                   try{

                            if(null == file){                                   

                                     file = new File(url);                                    

                                     if(file.isFile()){                                              

                                               if(file.canWrite()){                                                       

                                                        file.delete();

                                               }                                            

                                               flag = true;                                              

                                     }

                            }else{                                    

                                     if(url == file.getPath()){                                              

                                               file.delete();                                              

                                               flag = true;

                                     }

                            }                           

                   }catch(Exception e){                           

                            flag = false ;                           

                            e.printStackTrace();

                   }finally{                           

                            file = null;                           

                            System.gc();

                   }

                   return flag;

         }

         /**

     * 新建目录

     * @param folderPath String 如 c:/fqf

     * @return boolean

     */

   public static void newFolder(String folderPath) {

       try {

           String filePath = folderPath;

           filePath = filePath.toString();

           java.io.File myFilePath = new java.io.File(filePath);

           if (!myFilePath.exists()) {

               myFilePath.mkdir();

           }

       }

       catch (Exception e) {

           e.printStackTrace();

       }

   }

         /**

     * 复制单个文件

     * @param oldPath String 原文件路径 如:c:/fqf.txt

     * @param newPath String 复制后路径 如:f:/fqf.txt

     * @return boolean

     */

   public static void copyFile(String oldPath, String newPath) {

       try {

           int bytesum = 0;

           int byteread = 0;

           File oldfile = new File(oldPath);

           if (oldfile.exists()) { //文件存在时

               InputStream inStream = new FileInputStream(oldPath); //读入原文件

               FileOutputStream fs = new FileOutputStream(newPath);

               byte[] buffer = new byte[1444];

               int length;

               while ( (byteread = inStream.read(buffer)) != -1) {

                   bytesum += byteread; //字节数 文件大小

                   fs.write(buffer, 0, byteread);

               }

               inStream.close();

               fs.close();

           }

       }

       catch (Exception e) {

           e.printStackTrace();

       }

   }

/**

 

     * 使用文件通道的方式复制文件

     * @param s  源文件

     * @param t  复制到的新文件

     */

     public static void fileChannelCopy(String srcPath,String outpath) {

       File s = new File(srcPath);

       File t = new File(outpath);

         FileInputStream fi = null;

         FileOutputStream fo = null;

         FileChannel in = null;

         FileChannel out = null;

         try {

             fi = new FileInputStream(s);

             fo = new FileOutputStream(t);

             in = fi.getChannel();//得到对应的文件通道

             out = fo.getChannel();//得到对应的文件通道

             in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道

         } catch (IOException e) {

             e.printStackTrace();

         } finally {

             try {

                 fi.close();

                 in.close();

                 fo.close();

                 out.close();

             } catch (IOException e) {

                 e.printStackTrace();

             }

         }

     }

   /**

    * 上传文件

    * @param upFile 上传文件

    * @param targetFile 目标文件

    * @param b

    * @return

    */

   public static boolean fileUpload(File upFile , File targetFile , byte[] b){

                   InputStream is = null ;

                   OutputStream os = null ;

                   try{

                            is =  new FileInputStream(upFile);

                            os= new FileOutputStream(targetFile);

                            int length = 0;  

                 while((length = is.read(b))>0){  

                          os.write(b, 0, length);  

                 }

                   }catch(Exception e){

                            e.printStackTrace();

                            return false;

                   }finally{

                            try {

                                     if(null != is){

                                               is.close();  

                                     }if(null != os){

                                               os.close();

                                     }

                            } catch (IOException e) {

                                     e.printStackTrace();

                            }  

                   }

                   return true;

         }

   /**

    * 删除文件

    * @param f

    * @return

    */

   public static boolean deleteFile(File f){

            if (f.isFile())

           f.delete();

            return true;

   }

   /**

    * 删除文件夹

    * @param f

    * @return

    */

   public static boolean deleteDir(File f){

            if(f.isDirectory()){

                      File[] files = f.listFiles();

                      for(int i=0;i

                               if(files[i].isDirectory()) deleteDir(files[i]);

                               else deleteFile(files[i]);

                      }

            }

            f.delete();

            return true ;

   }

   /**

    * 文件下载

    * @param filePath 文件路径

    * @param fileType 文件类型

    * @param downName 下载文件名称

    * @param response 响应

    */

   public static void downLoadFile(String filePath,String fileType ,String downName,HttpServletResponse response){

                   OutputStream out = null;// 创建一个输出流对象

                   String headerStr = downName;

                   try{

                            InputStream is=new FileInputStream(filePath);

                            out = response.getOutputStream();//

                 headerStr =new String( headerStr.getBytes("gb2312"), "ISO8859-1" );//headerString为中文时转码

                            response.setHeader("Content-disposition", "attachment; filename="+ headerStr+"."+fileType);// filename是下载的xls的名,建议最好用英文

                            response.setContentType("application/msexcel;charset=GB2312");// 设置类型

                            response.setHeader("Pragma", "No-cache");// 设置头

                            response.setHeader("Cache-Control", "no-cache");// 设置头

                            response.setDateHeader("Expires", 0);// 设置日期头

                            // 输入流 和 输出流

                            int len = 0;

                            byte[] b = new byte[1024];

                            while ((len = is.read(b)) != -1) {

                                      out.write(b, 0, len);

                            }

                            is.close();

                            out.flush();

                            out.close();

                   } catch (Exception e) {

                            e.printStackTrace();

                   } finally {

                            try {

                                     if (out != null) {

                                               out.close();

                                     }

                            } catch (IOException e) {

                                     e.printStackTrace();

                            }

                   }

   }