码迷,mamicode.com
首页 > Web开发 > 详细

关于老项目替换class,jsp,js,html等等文件

时间:2019-06-20 11:04:31      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:本机   地方   mon   通过   如何获取   工作   项目   substring   设置   

目前呆的项目组主要是维护工作,因为项目比较老,很多文件需要一个个替换,有新产品上就经常要这样替换,很烦,就抽空写了个用于替换修改的文件,当然还有不足之处,最后会提下。

package com.test;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.SftpProgressMonitor;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class SftpUtil {
	private ChannelSftp channelSftp;
//  private ChannelExec channelExec;
  private Session session=null;
  private int timeout=60000;

  public SftpUtil(SshConfiguration conf) throws JSchException {
  	System.out.println("try connect to  "+conf.getHost()+",username: "+conf.getUserName()+",password: "+conf.getPassword()+",port: "+conf.getPort());
      JSch jSch=new JSch(); //创建JSch对象
      session=jSch.getSession(conf.getUserName(), conf.getHost(), conf.getPort());//根据用户名,主机ip和端口获取一个Session对象
      session.setPassword(conf.getPassword()); //设置密码
      Properties config=new Properties();
      config.put("StrictHostKeyChecking", "no");
      session.setConfig(config);//为Session对象设置properties
      session.setTimeout(timeout);//设置超时
      session.connect();//通过Session建立连接
  }
  public void download(String src,String dst) throws JSchException, SftpException{
      //src linux服务器文件地址,dst 本地存放地址
      channelSftp=(ChannelSftp) session.openChannel("sftp");
      channelSftp.connect();
      channelSftp.get(src, dst);
      channelSftp.quit();
  }
  public void upLoad(String src,String dst) throws JSchException,SftpException{
      //src 本机文件地址。 dst 远程文件地址
      channelSftp=(ChannelSftp) session.openChannel("sftp");
      channelSftp.connect();
      channelSftp.put(src, dst);
      System.out.println("upload file success!");
      channelSftp.quit();
  }
  public void close(){
      session.disconnect();
  }
  public static void main(String[] args) throws IOException {
		/**
		 * *********上传准备文件***************
		 */
  	SshConfiguration configuration=new SshConfiguration();
  	configuration.setHost("你的ip地址");
      configuration.setUserName("你的连接用户名");
      configuration.setPassword("你的连接密码");
      configuration.setPort(22);//端口一般都是22
		File file = new File("E:\\uploadFile\\upload.txt");//需要上传的文件存放于txt里后面按行读取
		BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
		String srcinput = null;
		try {
			while ((srcinput = bufferedReader.readLine()) != null) {//按行读取
				SFTPUtils sftp=new SFTPUtils(configuration);
				String[] strs = srcinput.split("\\.");
				String type = strs[strs.length - 1];
				System.out.println("type:" + type);
				// 判断文件是class还是jsp或js
				String dst1 = "你的应用部分路径";//后面会根据读入的做String的一些处理后拼接成上传的完整位置
				if ("class".equals(type)) {
					String src = srcinput.replace("\\", "\\\\");// 本地上传文件路径
					System.out.println("src:" + src);
					String[] strs1 = srcinput.split("\\\\");
					if ("某项目1".equals(strs1[3])) {// 属于某项目1目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目1/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
					if ("某项目2".equals(strs1[3])) {// 属于某项目2目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目2/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
					if ("某项目3".equals(strs1[3])) {// 属于某项目3目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目3/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
				}
				if ("jsp".equals(type) || "js".equals(type)) {// 该项目jsp和js放一起,一起判断且只在某项目1下
					String src = srcinput.replace("\\", "\\\\");// 本地上传文件路径
					System.out.println("src:" + src);
					String[] strs1 = srcinput.split("\\\\");
					if ("某项目1".equals(strs1[3])) {// 属于某项目1目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目1/");
						String last = srcinput.substring(srcinput.indexOf("view"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			bufferedReader.close();
		}
	}
}

  这种比较定制化,因为每个项目统一的格式不一样,有些js等静态文件喜欢放static或者直接建个js文件目录,所以老项目就各自根据自己的项目定制化下吧。。一劳永逸哈哈哈,当然原本是想自己修改了什么文件就自动捕获上传,但是还不清楚如何获取自己修改的文件所以没有实现,就用了在txt里写文件全路径的方式按行读取逐个上传的办法,,也还有很多地方可以完善,如果有大佬知道怎么获取文件被自己修改,请说下~

关于老项目替换class,jsp,js,html等等文件

标签:本机   地方   mon   通过   如何获取   工作   项目   substring   设置   

原文地址:https://www.cnblogs.com/codecola/p/11057291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!