MergeFiles.java 3.51 KB
package com.yoho.search.restapi.tools;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

public class MergeFiles {

	private static final String gorOriginFile = "C:/Users/gufei.hu/Desktop/双11压测/sort_0.gor";
	private static final String urlOriginFile = "C:/Users/gufei.hu/Desktop/双11压测/sort_origin_0.txt";
	private static final String urlResultsFile = "C:/Users/gufei.hu/Desktop/双11压测/sort_results_0.txt";

	public static void deleteAndCreateFile() throws Exception {
		// 创建以及删除文件
		File f = new File(urlOriginFile);
		if (f.exists()) {
			f.delete();
		}
		f.createNewFile();

		// 创建以及删除文件
		File f1 = new File(urlResultsFile);
		if (f1.exists()) {
			f1.delete();
		}
		f1.createNewFile();
	}

	private static List<String> uids = new ArrayList<String>();

	public static void initUrlFileFromGorFile() throws Exception {
		// 生成url文件
		BufferedReader from = new BufferedReader(new FileReader(gorOriginFile));
		BufferedWriter to = new BufferedWriter(new FileWriter(urlOriginFile));
		String s = from.readLine();
		while (s != null) {
			Pattern pattern = Pattern.compile("GET\\s(/yohosearch/sort/productList[^\\s]+)\\sHTTP/1.1");
			// 2.将字符串和正则表达式相关联
			Matcher matcher = pattern.matcher(s);
			// 3.String 对象中的matches 方法就是通过这个Matcher和pattern来实现的。
			if (matcher.find()) {
				String url = "http://10.66.4.30" + matcher.group(1);
				to.write(url);// 写入文件
				String uid = getUid(url);
				if (StringUtils.isNotBlank(uid) && !uids.contains(uid)) {
					uids.add(uid);
				}
				to.newLine();// 换行
			}
			s = from.readLine();
		}
		from.close();
		to.close();
		System.out.println("url文件初始化完成,总用户数:" + uids.size());
	}

	public static void genUrlResultsFiles(int beishu) {
		try {
			BufferedWriter to = new BufferedWriter(new FileWriter(urlResultsFile));
			for (int beishuIndex = 0; beishuIndex < beishu; beishuIndex++) {
				BufferedReader from = new BufferedReader(new FileReader(urlOriginFile));
				String url = from.readLine();
				while (url != null) {
					url = url.replaceAll("&order=[^&]*?&", "&order=&");// 去除order
					url = replaceUid(url);// 替换uid
					to.write(url);// 写入文件
					to.newLine();// 换行
					url = from.readLine();
				}
				from.close();
				System.out.println(String.format("文件[%s/%s]]生成成功...", beishuIndex + 1, beishu));
			}
			to.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static String getUid(String url) {
		Pattern pattern = Pattern.compile("uid=(\\d+)");
		Matcher matcher = pattern.matcher(url);
		if (matcher.find()) {
			return matcher.group(1);
		}
		return "";
	}
	
	public static String replaceUid(String url) {
		url = url.replaceAll("uid=", "");// 去除order
		url = url.replaceAll("&&", "&");// 去除order
		if (uids.size() > 0) {
			url = url + "&uid=" + uids.get((int) (Math.random() * uids.size()));
		}
		return url;
	}

	public static void main(String[] args) throws Exception {
		deleteAndCreateFile();
		initUrlFileFromGorFile();
		genUrlResultsFiles(200);
	}

}