`
JadeLuo
  • 浏览: 425705 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

自动发布工具类

 
阅读更多
[root@gris-test101 tmp]# cat cp_regulation.sh 
#ls -al 
#chmod +x regulation-1.1.0-SNAPSHOT.jar
#ls -al regulation-1.1.0-SNAPSHOT.jar
mkdir -p /tmp/bak
mv /data/web/webapp/WEB-INF/lib/regulation-1.1.0-SNAPSHOT.jar /tmp/bak
ls -al /data/web/webapp/WEB-INF/lib/regulation-1.1.0-SNAPSHOT.jar
mv regulation-1.1.0-SNAPSHOT.jar /data/web/webapp/WEB-INF/lib/
ls -al /data/web/webapp/WEB-INF/lib/regulation-1.1.0-SNAPSHOT.jar

[root@gris-test101 tmp]# cat DeployServer.java 

import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Random;

//import org.apache.commons.fileupload.util.Streams;

/**
 * 接收文件服务
 * 
 * @author admin_Hzw
 * 
 */
public class DeployServer {
	private static String getIp() {
		String ip = "127.0.0.1";
		try {
			ip = InetAddress.getLocalHost().getHostAddress();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
		return ip;
	}

	/**
	 * 工程main方法
	 * 
	 * @param args
	 */
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		try {
			final ServerSocket server = new ServerSocket(48123);
			Thread th = new Thread(new Runnable() {
				public void run() {
					while (true) {
						try {
							System.out.println("开始监听...");
							/*
							 * 如果没有访问它会自动等待
							 */
							Socket socket = server.accept();
							System.out.println("有链接");
							receiveFile(socket);
						} catch (Exception e) {
							System.out.println("服务器异常");
							e.printStackTrace();
						}
					}
				}
			});
			th.run(); // 启动线程运行
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void run() {
	}

	/**
	 * 接收文件方法
	 * 
	 * @param socket
	 * @throws IOException
	 */
	public static void receiveFile(Socket socket) throws IOException {
		byte[] inputByte = null;
		int length = 0;
		DataInputStream dis = null;
		FileOutputStream fos = null;
		
		if("10.51.111.101".equals(getIp())){
			
		}
		String filePath = "/data/web/webapp/WEB-INF/lib/regulation-1.1.0-SNAPSHOT.jar";
    filePath = "/tmp/regulation-1.1.0-SNAPSHOT.jar";
		try {
			try {
				// String fileContent =
				// Streams.asString(socket.getInputStream());
				// System.out.println(fileContent);// 测试打印出上传文件的内容

				dis = new DataInputStream(socket.getInputStream());
				File f = new File("/tmp");
				if (!f.exists()) {
					f.mkdir();
				}
				/*
				 * 文件存储位置
				 */
				fos = new FileOutputStream(new File(filePath));
				inputByte = new byte[1024];
				System.out.println("开始接收数据...");
				while ((length = dis.read(inputByte, 0, inputByte.length)) > 0) {
					fos.write(inputByte, 0, length);
					fos.flush();
				}
				System.out.println("完成接收:" + filePath);
			} finally {
				if (fos != null)
					fos.close();
				if (dis != null)
					dis.close();
				if (socket != null)
					socket.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

package com.ygsoft.community.regulation.util.ext;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;

/**
 * 文件发送客户端主程序
 * @author admin_Hzw
 *
 */
public class DeployClient{
	
	/**
	 * 程序main方法
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		File zipFile = new File("f:/webapp.war");
    	String descDir = "f:/descDir";
    	File f = new File(descDir);
		if (!f.exists()) {
			f.mkdir();
		}
    	ZipUtil.upzipFile(zipFile, descDir);
    	
		int length = 0;
		double sumL = 0 ;
		byte[] sendBytes = null;
		Socket socket = null;
		DataOutputStream dos = null;
		FileInputStream fis = null;
		boolean bool = false;
		try {
			File file = new File("F:/descDir/WEB-INF/lib/regulation-1.1.0-SNAPSHOT.jar"); //要传输的文件路径
			long l = file.length(); 
			socket = new Socket();  
//			socket.connect(new InetSocketAddress("127.0.0.1", 48123));
			socket.connect(new InetSocketAddress("10.51.111.101", 48123));
			dos = new DataOutputStream(socket.getOutputStream());
			fis = new FileInputStream(file);      
			sendBytes = new byte[1024];  
			while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {
				sumL += length;  
				System.out.println("已传输:"+((sumL/l)*100)+"%");
				dos.write(sendBytes, 0, length);
				dos.flush();
			} 
			//虽然数据类型不同,但JAVA会自动转换成相同数据类型后在做比较
			if(sumL==l){
				bool = true;
			}
		}catch (Exception e) {
			System.out.println("客户端文件传输异常");
			bool = false;
			e.printStackTrace();  
		} finally{  
			if (dos != null)
				dos.close();
			if (fis != null)
				fis.close();   
			if (socket != null)
				socket.close();    
		}
		System.out.println(bool?"成功":"失败");
	}
}

 

package com.ygsoft.community.regulation.util.ext;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;


/**
 * 压缩或解压zip:
 * 由于直接使用java.util.zip工具包下的类,会出现中文乱码问题,所以使用ant.jar中的org.apache.tools.zip下的工具类
 * @author Administrator
 */

public class ZipUtil {
    private static byte[] _byte = new byte[1024] ;
    /**
     * 压缩文件或路径
     * @param zip 压缩的目的地址
     * @param srcFiles 压缩的源文件
     */
    public static void zipFile( String zip , List<File> srcFiles ){
        try {
            if( zip.endsWith(".zip") || zip.endsWith(".ZIP") ){
                ZipOutputStream _zipOut = new ZipOutputStream(new FileOutputStream(new File(zip))) ;
                _zipOut.setEncoding("UTF-8");
                for( File _f : srcFiles ){
                    handlerFile(zip , _zipOut , _f , "");
                }
                _zipOut.close();
            }else{
                System.out.println("target file[" + zip + "] is not .zip type file");
            }
        } catch (FileNotFoundException e) {
        	e.printStackTrace();
        } catch (IOException e) {
        	e.printStackTrace();
        }
    }
    
    /**
     * 
     * @param zip 压缩的目的地址
     * @param zipOut 
     * @param srcFile  被压缩的文件信息
     * @param path  在zip中的相对路径
     * @throws IOException
     */
    private static void handlerFile(String zip , ZipOutputStream zipOut , File srcFile , String path ) throws IOException{
        System.out.println(" begin to compression file[" + srcFile.getName() + "]");
        if( !"".equals(path) && ! path.endsWith(File.separator)){
            path += File.separator ;
        }
        if( ! srcFile.getPath().equals(zip) ){
            if( srcFile.isDirectory() ){
                File[] _files = srcFile.listFiles() ;
                if( _files.length == 0 ){
                    zipOut.putNextEntry(new ZipEntry( path + srcFile.getName() + File.separator));
                    zipOut.closeEntry();
                }else{
                    for( File _f : _files ){
                        handlerFile( zip ,zipOut , _f , path + srcFile.getName() );
                    }
                }
            }else{
                InputStream _in = new FileInputStream(srcFile) ;
                zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()));
                int len = 0 ; 
                while( (len = _in.read(_byte)) > 0  ){
                    zipOut.write(_byte, 0, len);
                }
                _in.close();
                zipOut.closeEntry();
            }
        }
    }

    /**
     * 解压缩ZIP文件,将ZIP文件里的内容解压到targetDIR目录下
     * @param zipName 待解压缩的ZIP文件名
     * @param targetBaseDirName  目标目录
     */
    public static List<File> upzipFile(String zipPath, String descDir) {
        return upzipFile( new File(zipPath) , descDir ) ;
    }
    
    /**
     * 对.zip文件进行解压缩
     * @param zipFile  解压缩文件
     * @param descDir  压缩的目标地址,如:D:\\测试 或 /mnt/d/测试
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static List<File> upzipFile(File zipFile, String descDir) {
        List<File> _list = new ArrayList<File>() ;
        try {
            ZipFile _zipFile = new ZipFile(zipFile , "GBK") ;
            for( Enumeration entries = _zipFile.getEntries() ; entries.hasMoreElements() ; ){
                ZipEntry entry = (ZipEntry)entries.nextElement() ;
                File _file = new File(descDir + File.separator + entry.getName()) ;
                if( entry.isDirectory() ){
                    _file.mkdirs() ;
                }else{
                    File _parent = _file.getParentFile() ;
                    if( !_parent.exists() ){
                        _parent.mkdirs() ;
                    }
                    InputStream _in = _zipFile.getInputStream(entry);
                    OutputStream _out = new FileOutputStream(_file) ;
                    int len = 0 ;
                    while( (len = _in.read(_byte)) > 0){
                        _out.write(_byte, 0, len);
                    }
                    _in.close(); 
                    _out.flush();
                    _out.close();
                    _list.add(_file) ;
                }
            }
        } catch (IOException e) {
        	e.printStackTrace();
        }
        return _list ;
    }
    
    /**
     * 对临时生成的文件夹和文件夹下的文件进行删除
     */
    public static void deletefile(String delpath) {
        try {
            File file = new File(delpath);
            if (!file.isDirectory()) {
                file.delete();
            } else if (file.isDirectory()) {
                String[] filelist = file.list();
                for (int i = 0; i < filelist.length; i++) {
                    File delfile = new File(delpath + File.separator + filelist[i]);
                    if (!delfile.isDirectory()) {
                        delfile.delete();
                    } else if (delfile.isDirectory()) {
                        deletefile(delpath + File.separator + filelist[i]);
                    }
                }
                file.delete();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
    	File zipFile = new File("f:/webapp.war");
    	String descDir = "f:/descDir";
    	File f = new File(descDir);
		if (!f.exists()) {
			f.mkdir();
		}
    	ZipUtil.upzipFile(zipFile, descDir);
    }
    
}

 

分享到:
评论

相关推荐

    C#工具类库类库 包含所有的常用工具类

    而"DotNet.Utilities"可能是实际的库文件,包含已编译的工具类。 总的来说,这个C#工具类库提供了全面的辅助功能,覆盖了开发过程中的许多常见需求,是一个强大的开发资源。通过合理利用这些工具,开发者可以更专注...

    jdbc 工具类、帮助类

    8. **性能优化**:工具类可能会包含一些性能优化策略,如设置合适的超时时间、自动关闭资源等。 在实际开发中,一个优秀的JDBC工具类不仅能够简化数据库操作,还能提高代码的可维护性和性能。通过使用这样的工具类...

    微头条全自动发布1.4微头条发布器-其它工具类资源.zip

    "其它工具类资源"可能指的是与该发布器相关的其他辅助工具或者配置文件,比如可能有配置文档、教程、示例数据等,用于帮助用户更好地理解和使用该发布器。 【标签】"C#"是微软公司推出的一种面向对象的编程语言,它...

    myeclipse添加自动发编译工具

    JAD是Java字节码到源代码的反编译工具,它可以帮助开发者理解已编译的类文件结构,或者在没有源代码的情况下进行调试。在MyEclipse环境中,虽然我们通常不需要直接使用JAD,但了解其工作原理和用途对于Java开发人员...

    javaweb jdbc工具类.zip

    2. **自动处理事务**:工具类可以封装开始事务、提交事务和回滚事务的逻辑,这样在Dao层只需关注业务逻辑,无需关心事务的管理。在出现异常时,工具类能自动回滚事务,确保数据的一致性。 3. **预编译SQL语句...

    Android-AndroidStudio快速创建常用工具类的插件

    例如,可能有一个“Generate Utils Class”或者类似的命令,点击后会弹出一个对话框,让你选择需要的工具类功能,比如选择添加一个网络请求工具类或一个日志打印工具类。 在生成工具类时,插件可能会提供预设的模板...

    SpringJdbcTemplate封装工具类

    这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及异常处理的负担。下面我们将深入探讨SpringJdbcTemplate的相关知识点。 1. **SpringJdbcTemplate...

    java常用工具类封装

    Maven可以帮助开发者管理项目依赖关系,自动化构建过程,如编译、测试、打包、部署等。 5. **版本控制系统Git**: `.gitignore`文件用来定义哪些文件或目录不应该被Git版本控制系统跟踪。这样可以避免将不必要的...

    强大的自动编译签名工具

    常用的反编译工具有如dex2jar和JD-GUI,它们能将.dex文件(Dalvik字节码)转换为.jar文件,再进一步转换成Java源代码。反编译在调试、安全分析和二次开发等领域有广泛应用。 接着,重新编译APK是在反编译的基础上...

    kotlin工具类.zip

    在工具类中,我们可以看到这样的泛型方法,它们能够确保在编译时就捕获错误,避免运行时异常。 2. **扩展函数与属性** Kotlin的扩展函数和属性使得我们可以在不修改原有类的情况下为其添加新功能。工具类中可能...

    6.0论坛自动回复工具

    它会定期扫描论坛的新帖或特定帖子,当发现与预设规则匹配的内容时,会自动发布预设的回复。这些规则可能包括关键词、主题分类、发帖时间等。 2. **功能特性**: - **自动监控**:工具持续监控论坛的新帖子,一旦...

    RabbitMQ工具类封装实现

    本篇文章将重点讲解如何进行RabbitMQ的工具类封装,以及在Android环境下的使用。 首先,`MQSubscribeService.java`代表的是订阅者服务,它是接收和处理来自RabbitMQ的消息的组件。在封装订阅者线程时,通常会包括...

    防止sql注入工具类l

    这个工具类可能提供了自动转义或参数化查询的功能,比如`mysqli_real_escape_string`函数,或者更高级的ORM框架如Doctrine,它们内置了防止SQL注入的安全机制。 4. **最小权限原则**:数据库连接账户应具有执行其...

    工具类的jar包集合

    2. `itcast_1.0.jar`:这个可能是某教育机构或项目(如传智播客)发布的版本为1.0的库,可能包含了一些特定的工具类或者框架组件。 3. `CookieUtils.java`:这是一个单独的Java源文件,用于处理HTTP协议中的Cookie...

    PLSQL工具类

    PLSQL工具类则是针对Oracle开发的一种辅助工具,旨在简化开发过程,提高工作效率。 在Oracle开发中,PLSQL工具类通常包括以下功能: 1. 连接管理:工具类会提供连接Oracle数据库的接口,支持配置数据库连接参数如...

    jdbc经典工具类

    1. **JDBC工具类**:JDBC工具类通常封装了数据库连接、预编译SQL语句、执行SQL、关闭资源等常见操作,以减少重复代码,提升开发效率。`connJdbcUtil`可能是一个实现了这些功能的Java类。 2. **数据库连接配置**:...

    CXF webService 工具类

    CXF工具类是CXF框架的一部分,提供了一系列方便实用的方法,帮助开发者在处理与Web服务相关的任务时提高效率。 1. **Web服务基础** - **SOAP(Simple Object Access Protocol)**:是一种基于XML的消息传递协议,...

    JDBC非常实用的工具类

    总结一下,"JDBC非常实用的工具类"主要帮助开发者高效、安全地进行数据库操作,通过提供连接管理、预编译SQL、异常处理、事务控制等功能,降低开发难度,提高代码质量。使用这样的工具类,可以让你专注于业务逻辑,...

    个人整理的好用工具类

    封装的AMQ工具类可能是为了简化消息的发送、接收和处理,包括创建连接、发布/订阅模式、点对点模式的应用,以及异常处理和消息确认机制。 最后,"common-util"这个文件名可能表示的是一个通用工具类库,包含了各种...

    jedis工具类

    这个工具类的主要目的是在程序运行时自动读取配置文件(例如`redis.properties`),并根据配置创建和管理Redis连接池,类似于proxool这样的数据库连接池管理工具。 首先,让我们了解一下`Jedis`。Jedis是Java语言的...

Global site tag (gtag.js) - Google Analytics