`
天空之城
  • 浏览: 398269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 常用的工具接口包括文件压缩,解压缩,IP转换,文件删除(解决中文问题) .

    博客分类:
  • Java
 
阅读更多
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Enumeration;
import org.apache.log4j.Logger;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import com.captech.lang.ErrorType;
import com.captech.ws.rs.WebApplicationException;
public class CommonUtils {
	
	protected static Logger logger = Logger.getLogger(CommonUtils.class);
	
	public static long getStringIpToLong(String ip) {
		ip = ip.trim();
		String[] ips = ip.split("[.]");
		long num = 16777216L * Long.parseLong(ips[0]) + 65536L
				* Long.parseLong(ips[1]) + 256 * Long.parseLong(ips[2])
				+ Long.parseLong(ips[3]);
		return num;
	}
	
    public static String longToIP(long longIp) {   
        StringBuffer sb = new StringBuffer("");   
        sb.append(String.valueOf((longIp >>> 24)));   
        sb.append(".");   
        sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));   
        sb.append(".");   
        sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));   
        sb.append(".");   
        sb.append(String.valueOf((longIp & 0x000000FF)));   
        return sb.toString();   
    }
    
    public static File zipFiles (String filePath, String zipname){
		FileOutputStream fos=null;
		ZipOutputStream zipOut=null;
		File fileList = new File(filePath);
		if(fileList.exists() && fileList.isDirectory()){
			File[] files=fileList.listFiles();
			try {
				 File out = new File(zipname);
				 if(!out.exists()){
					  out.createNewFile();
				 }
				 fos = new FileOutputStream(out);//创建文件输出流(低级流)
				 zipOut = new ZipOutputStream(fos);//创建zip文件输出流
		         zipOut.setEncoding("gbk");
		         int i = 0;
		         for (i = 0; i < files.length; i++) {
		        	  writeFile(files[i], zipOut, "");
		         }
		         zipOut.close();
		         return out;
			 }catch(IOException e){
				 throw createAndLogException(ErrorType.FILE_WRITE_ERROR, e);
			 }
		}else{
			  	 throw createAndLogException(ErrorType.FILE_OPEN_ERROR, new Exception("file Not exist"));
		}
    }
    
    public static void writeFile(File file, ZipOutputStream zipOut, String base){
    	try {
    		if(file.isDirectory()){
    			File[] files = file.listFiles();
    			base = base + file.getName() + File.separator;
    			zipOut.putNextEntry(new ZipEntry(base));
    			for (int i = 0; i < files.length; i++) {
    				writeFile(files[i], zipOut, base);
    			}
    		}else{
    			base = base + file.getName();
    			BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(file),"ISO8859_1"));  
    			ZipEntry ze = new ZipEntry(base);
    			zipOut.putNextEntry(ze);
    			int c = 0;
    			while ((c = in.read()) != -1) {
    			    zipOut.write(c);
    			}
    			in.close();
    		}
		} catch(Exception e){
	    	 throw createAndLogException(ErrorType.FILE_WRITE_ERROR, e);
	    }
    }
  
  //删除文件夹的接口
	public static boolean deleteDirectory(File file){
		if( file.exists() ) {   
		      File[] files = file.listFiles();   
		      for(int i=0; i<files.length; i++) {   
		         if(files[i].isDirectory()) {   
		           deleteDirectory(files[i]);   
		         }   
		         else {   
		           files[i].delete();   
		         }   
		   }   
		}   
		return( file.delete());
	}
  
  //复制文件的接口
	public  static void copyFile(File sourceFile,File targetFile) { 
      // 新建文件输入流并对它进行缓冲 
	  try {
	  		if(!targetFile.getParentFile().exists()){
	  			targetFile.getParentFile().mkdir();
	  		}
	  		if(!targetFile.exists()){
	  			targetFile.createNewFile();
	  		}
				FileInputStream input = new FileInputStream(sourceFile); 
				BufferedInputStream inBuff=new BufferedInputStream(input); 
	
				// 新建文件输出流并对它进行缓冲 
				FileOutputStream output = new FileOutputStream(targetFile); 
				BufferedOutputStream outBuff=new BufferedOutputStream(output); 
				 
				// 缓冲数组 
				byte[] b = new byte[1024 * 5]; 
				int len; 
				while ((len =inBuff.read(b)) != -1) { 
				    outBuff.write(b, 0, len); 
				} 
				// 刷新此缓冲的输出流 
				outBuff.flush(); 
				 
				//关闭流 
				inBuff.close(); 
				outBuff.close(); 
				output.close(); 
				input.close();
			} catch (Exception e) {
				throw createAndLogException(ErrorType.FILE_WRITE_ERROR, e);
		} 
	}
	
	@SuppressWarnings("unchecked")
	public static void unzipFile(String unzipfile, String outputDirectory){
		try {
			ZipFile zipFile = new ZipFile(unzipfile,"GBK");
			ZipEntry entry;
			// 创建文件夹
			Enumeration<ZipEntry> e = zipFile.getEntries();
			while (e.hasMoreElements()) {
				entry = e.nextElement();
				String name = entry.getName();
				if (!name.endsWith(File.separator)) {
					File f = new File(outputDirectory + File.separator + entry.getName());
					if (!f.getParentFile().exists()) {
						f.getParentFile().mkdirs();
					}
					InputStream in = zipFile.getInputStream(entry);
					FileOutputStream out = new FileOutputStream(f);
					int c;
					byte[] by = new byte[1024];
					while ((c = in.read(by)) != -1) {
						out.write(by, 0, c);
					}
					out.close();
					in.close();
				}
			}
			zipFile.close();
		} catch (IOException e) {
			createAndLogException(ErrorType.FILE_OPEN_ERROR, new Throwable("unzip file error"));
		}
	}

 

分享到:
评论

相关推荐

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

Global site tag (gtag.js) - Google Analytics