java -jar linux_Java 执行jar linux 实例

需求:通过执行jar的方式 ,把某个文件路径下的用户数据同步到redis

1、main 函数

public classMain {private static Logger logger = LoggerFactory.getLogger(Main.class);private static DisruptorService disruptorService = newDisruptorService();private static AppsTaskService appsTaskService =newAppsTaskService();/*** 调用具体的方法

*@paramargs*/

public static voidmain (String[] args) {try{if(args[0].trim().equals("appsTask")){

appsTaskService.appsTask(args[1],args[2]);

}else{

Method targetMethod= DisruptorService.class.getDeclaredMethod(args[0].trim(), args.getClass());

targetMethod.invoke(disruptorService, (Object)args);

}

}catch(Exception e) {

e.printStackTrace();

logger.error(e.getMessage());

}

}

}

2 service

package cn.ycmedia.dmp.redisData.service;

import cn.ycmedia.dmp.redisData.common.Consts;

import cn.ycmedia.dmp.redisData.dao.IndexPartionRedisDao;

import cn.ycmedia.dmp.redisData.utils.FileUtil;

import cn.ycmedia.dmp.redisData.utils.StringUtil;

import org.apache.commons.lang3.StringUtils;

import redis.clients.jedis.Jedis;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.lang.reflect.InvocationTargetException;

/**

* Created by ${朱良兴} on 2016/7/20.

*/

public class AppsTaskService {

private IndexPartionRedisDao redisDao = new IndexPartionRedisDao();

/**

*

* @param arg app分类+app父类ID

* @param arg1 文件所在路径

*/

public void appsTask(String arg, String arg1) {

File root = new File(arg1);

try {

showAllFiles(arg,root);

}catch (Exception e){

}

}

public void showAllFiles(String arg ,File dir) throws Exception{

File[] fs = dir.listFiles();

BufferedReader reader;

for(int i=0; i

reader = new BufferedReader(new FileReader(fs[i].getAbsolutePath()));

String line;

while ((line = reader.readLine()) != null&&!" ".equals((line = reader.readLine()))) {

saveRecord(arg,line);

}

if(fs[i].isDirectory()){

try{

showAllFiles(arg,fs[i]);

}catch(Exception e){}

}

}

}

public void saveRecord (String projectId, String line)

throws IOException, InvocationTargetException, IllegalAccessException{

try {

Jedis jedis = null;

try {

String uid = line.trim();

String key = Consts.Disruptor.keyPrefix + uid;

jedis = redisDao.getJedis(uid);

String exist = jedis.hget(key, "apps");

System.out.println("之前的:"+exist);

String value;

if (StringUtils.isBlank(exist)) {

value = projectId;

jedis.hset(key, "apps", value);

}

else {

String newValue= StringUtil.adverticalPro(exist,projectId);

jedis.hset(key, "apps", newValue);

}

System.out.println("之后的:"+jedis.hget(key, "apps"));

jedis.expire(key, Consts.Redis.REDIS_EXPIRE_MONTH);

}catch (Exception e) {

e.printStackTrace();

} finally {

if (jedis != null) {

jedis.close();

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

======================打包成jar

D++yROv8sZ8VgAAAABJRU5ErkJggg==

=============================

执行: java -jar proBanDirect-jar-with-dependencies.jar  appsTask 5,6\|8,9  /opt2/dmp/redisApps/file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值