直接上代码:
public static void main(String[] args) throws Exception {
//创建14个List,后续做批量入库的操作
List<VigourDetail> idList = new ArrayList<>();
List<VigourDetail> idList025 = new ArrayList<>();
List<VigourDetail> idList0510 = new ArrayList<>();
List<VigourDetail> idList0511 = new ArrayList<>();
List<VigourDetail> idList0512 = new ArrayList<>();
List<VigourDetail> idList0513 = new ArrayList<>();
List<VigourDetail> idList0514 = new ArrayList<>();
List<VigourDetail> idList0515 = new ArrayList<>();
List<VigourDetail> idList0516 = new ArrayList<>();
List<VigourDetail> idList0517 = new ArrayList<>();
List<VigourDetail> idList0518 = new ArrayList<>();
List<VigourDetail> idList0519 = new ArrayList<>();
List<VigourDetail> idList0523 = new ArrayList<>();
List<VigourDetail> idList0527 = new ArrayList<>();
//指定文件路径
File file = new File("D:\\logs\\live_20220603.txt");
//读取文件行数
LineNumberReader in = new LineNumberReader(new FileReader("D:\\logs\\live_20220603.txt"));
in.skip(Long.MAX_VALUE);
//实际读取换行符,所以需要+1
int num=in.getLineNumber()+1;
System.out.println("文件行数:"+num);
try(FileInputStream fileInputStream = new FileInputStream(file)){
//设置读取的文件流和文件编码
InputStreamReader reader = new InputStreamReader(fileInputStream, "UTF-8");
BufferedReader br = new BufferedReader(reader);
String lineTxt ="";
//开始读取文件,一行一行读
while ((lineTxt = br.readLine()) != null) {
//这里做个简单的校验
if(lineTxt==null ||"".equals(lineTxt.trim())){
System.out.println("存在空行");
break;
}
//New一个对象
VigourDetail vigourDetail = new VigourDetail();
//根据指定文件行的格式去截 我这里是:账户 # 积分
//账户
String account=lineTxt.substring(0,lineTxt.indexOf("#"));
//积分
String time= lineTxt.substring(account.length()+1,lineTxt.length());
//根据账户获取表名称
String tableName = getTableName(account);
//我这里是判断属于哪个List
if (tableName.equals("vigour_detail")){
vigourDetail.setAccountId(account);
vigourDetail.setChangeValue(Double.valueOf(time));
idList.add(vigourDetail);
}else if (tableName.equals("vigour_detail_025")){
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList025.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0510")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0510.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0511")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0511.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0512")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0512.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0513")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0513.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0514")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0514.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0515")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
System.out.println(account+"——"+time);
idList0515.add(vigourDetail);
System.out.println("0515List:"+idList0515.size());
} else if (tableName.equals("vigour_detail_0516")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0516.add(vigourDetail);
}else if(tableName.equals("vigour_detail_0517")){
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0517.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0518")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0518.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0519")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0519.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0523")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0523.add(vigourDetail);
} else if (tableName.equals("vigour_detail_0527")) {
vigourDetail.setAccountId(account);
//Double taskVigour = vipWebDao.getValue(task.getTaskId());
vigourDetail.setChangeValue(Double.valueOf(time));
idList0527.add(vigourDetail);
}
//这里可以做一系列的入库操作,将14个List入库
}
br.close();
reader.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("read file failed!");
}
}
//自己封装的获取表名方法
public static String getTableName(String userId) {
String tableName = "vigour_detail";
String str = userId.substring(0,4);
if(userId.startsWith("025")){
tableName = tableName + "_025";
return tableName;
}
switch (str){
case "0510" :
tableName = tableName + "_0510";
break;
case "0511" :
tableName = tableName + "_0511";
break;
case "0512" :
tableName = tableName + "_0512";
break;
case "0513" :
tableName = tableName + "_0513";
break;
case "0514" :
tableName = tableName + "_0514";
break;
case "0515" :
tableName = tableName + "_0515";
break;
case "0516" :
tableName = tableName + "_0516";
break;
case "0517" :
tableName = tableName + "_0517";
break;
case "0518" :
tableName = tableName + "_0518";
break;
case "0519" :
tableName = tableName + "_0519";
break;
case "0523" :
tableName = tableName + "_0523";
break;
case "0527" :
tableName = tableName + "_0527";
break;
default:
break;
}
return tableName;
}