J2EE社区

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

 

package com.wepull.demo;

 

import java.io.*;

import java.util.zip.*;

 

/**

 * 对文件或者目录操作的类

 * 
@version 1.0

 * 
@author leno

 
*/


public class FileUtil {

 

   
private static void copy(File source, File target) throws IOException {

      File tar 
= new File(target, source.getName());

      
if (source.isDirectory()) {

        System.out.println(
"开始创建目录:" + tar.getPath());

        tar.mkdir();

        File[] fs 
= source.listFiles();

        
for (int i = 0; i < fs.length; i++{

           copy(fs[i], tar);

        }


      }
 else {

        System.out.println(
"开始从" + source + "拷贝文件到" + tar.getPath());

        InputStream is 
= new FileInputStream(source);

        OutputStream os 
= new FileOutputStream(tar);

        
byte[] buf = new byte[1024];

        
int len = 0;

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

           os.write(buf, 
0, len);

        }


        is.close();

        os.close();

      }


   }


 

   
/**

    * 拷贝文件或者目录到某个指定的路径

    * 

    * 
@param source

    *            源文件或者目录

    * 
@param target

    *            目标路径

    * 
@throws IOException

    
*/


   
public static void copy(String source, String target) {

      File sour 
= new File(source);

      File tar 
= new File(target);

      
try {

        copy(sour, tar);

      }
 catch (IOException e) {

        
// TODO Auto-generated catch block

        e.printStackTrace();

      }


   }


 

   
private static void delete(File file) {

      
if (file.isDirectory()) {

        File[] fs 
= file.listFiles();

        
for (int i = 0; i < fs.length; i++{

           delete(fs[i]);

        }


        file.delete();

      }
 else {

        file.delete();

      }


   }


 

   
/**

    * 删除一个文件或者目录

    * 

    * 
@param file

    
*/


   
public static void delete(String path) {

      File file 
= new File(path);

      delete(file);

   }


 

   
/**

    * 压缩文件或者目录到指定的路径

    * 

    * 
@param zipFileName

    *            目标路径

    * 
@param inputPath

    *            被压缩的文件或者目录

    
*/


   
public static void zip(String zipFileName, String inputPath) {

      File inputFile 
= new File(inputPath);

      ZipOutputStream out;

      
try {

        out 
= new ZipOutputStream(new FileOutputStream(zipFileName));

        zip(out, inputFile, inputFile.getName());

        System.out.println(
"压缩完成!");

        out.close();

      }
 catch (Exception e) {

        
// TODO Auto-generated catch block

        e.printStackTrace();

      }


   }


 

   
private static void zip(ZipOutputStream out, File f, String base)

        
throws Exception {

      System.out.println(
"正在压缩:" + f.getName() + " ");

      
if (f.isDirectory()) {

        File[] fs 
= f.listFiles();

        base 
+= "/";

        System.out.println(
"新建目录条目:" + f.getName());

        out.putNextEntry(
new ZipEntry(base)); // 生成相应的目录

        
for (int i = 0; i < fs.length; i++{

           
// 对本目录下的所有文件对象递归调用本方法

           zip(out, fs[i], base 
+ fs[i].getName());

        }


      }
 else {

        System.out.println(
"新增文件条目:" + f.getName());

        out.putNextEntry(
new ZipEntry(base));

        InputStream is 
= new FileInputStream(f);

        
byte[] buf = new byte[1024];

        
int len = 0;

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

           out.write(buf, 
0, len);

        }


        is.close();

      }


   }


 

   
/**

    * 解压缩zip文件到指定的路径

    * 

    * 
@param zipfile

    *            zip格式压缩文件

    * 
@param desPath

    *            目标路径

    
*/


   
public static void unzip(String zipFile, String desPath) {

      
// 建立输出流,用于将从压缩文件中读出的文件流写入到磁盘

      OutputStream out 
= null;

      
// 建立输入流,用于从压缩文件中读出文件

      ZipInputStream is;

      
try {

        is 
= new ZipInputStream(new FileInputStream(zipFile));

        ZipEntry entry 
= null;

        
while ((entry = is.getNextEntry()) != null{

           System.out.println(
"正在解压缩:" + entry.getName() + " ");

           File f 
= new File(desPath + "\\" + entry.getName());

           
if (entry.isDirectory()) {

              System.out.println(
"新建目录:" + f.getName());

              f.mkdir();

           }
 else {

              System.out.println(
"新增文件:" + f.getName());

              
// 根据压缩文件中读出的文件名称新建文件

              out 
= new FileOutputStream(f);

              
byte[] buf = new byte[1024];

              
int len = 0;

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

                 out.write(buf, 
0, len);

              }


              out.close();

           }


        }


        is.close();

      }
 catch (Exception e) {

        
// TODO Auto-generated catch block

        e.printStackTrace();

      }


   }


 

   
/**

    * 创建新文件

    * 

    * 
@param path

    
*/


   
public static void createFile(String path) {

      File file 
= new File(path);

      
try {

        file.createNewFile();

      }
 catch (IOException e) {

        
// TODO Auto-generated catch block

        e.printStackTrace();

      }


 

   }


 

   
/**

    * 创建新目录

    * 

    * 
@param path

    
*/


   
public static void createDir(String path) {

      File file 
= new File(path);

      file.mkdirs();

   }


 

   
/**

    * 剪切文件或者目录到某个指定的路径

    * 

    * 
@param source

    *            源文件或者目录

    * 
@param target

    *            目标路径

    * 

    
*/


   
public static void cutTo(String source, String target) {

      File sourFile 
= new File(source);

      File tarFile 
= new File(target);

      
if (sourFile.isFile()) {

        
if (tarFile.isDirectory()) {

           sourFile.renameTo(tarFile);

        }


      }
 else {

        copy(source, target);

        delete(source);

      }


   }


 

   
public static void main(String[] args) {

      
// copy("E:\\w.txt", "E:\\a");

      
// delete("E:\\a");

      
// zip("E:\\a.zip", "E:\\b");

      
// unzip("E:\\a.zip", "E:\\b");

      
// createFile("E:\\a.txt");

      
// createDir("E:\\bb");

      
// cutTo("E:\\b", "D:\\");

   }


}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lenotang/archive/2008/07/23/2698562.aspx



名称: ♪4C.ESL | .↗Evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail: 联系我



只有注册用户登录后才能发表评论。


网站导航: