一个变态的统计文件中log不重复字符的个数的程序

package com.xiaxing.io;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileOperator {
	private static final String FILTER = "xxxx - [lineId : ";
	private static List<String> mValidNumList = new ArrayList<String>(); 

	public static class Logger {
		public Logger() {
		}

		public static void v(String string) {
			System.out.println(string);
			return;
		}
	}

	private static int readFileByLine(String filePath) {
		File file = new File(filePath);
		BufferedReader reader = null;
		Integer totallinecount = 0;
		Integer validlinecount = 0;
		try {
			reader = new BufferedReader(new FileReader(file));
			String tempString = "";
			String curString = "";
			String oldString = "";
			while ((tempString = reader.readLine()) != null) {
				// Logger.v(curString);
				if (!tempString.contains(FILTER))
					continue;

				curString = getValidString(tempString);

				if (curString == null) {
					Logger.v("********************* error **********************");
				}

				totallinecount++;

				if (oldString.equalsIgnoreCase(curString)) {
					oldString = curString;
					continue;
				}

				oldString = curString;
				
				//whether lineid already have
				if (mValidNumList.contains(curString)) {
					Logger.v("string already have in the list");
					continue;
				}
				
				mValidNumList.add(curString);
				validlinecount++;
			}
			reader.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			Logger.v("total line number : " + totallinecount.toString() + "\n"
					+ "valid line number : " + validlinecount + "\n"
					+ "------------------------- File Read Over " + "\n\n");
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

		return validlinecount;
	}

	private static void readDir(String filePath) {
		File dir = new File(filePath);
		File[] files = dir.listFiles();
		int validcount = 0;
		for (int i = 0; i < files.length; i++) {
			String tempFile = files[i].toString();
			Logger.v("------------------------- File Read Start, FileName : "
					+ tempFile);
			int count = readFileByLine(tempFile);
			validcount = validcount + count;
		}
		Logger.v("======================================" + "\n"
				+ "Total valid count : " + validcount + "\n"
				+ "======================================");
	}

	private static String getValidString(String origString) {
		String output = null;
		String temp = origString;
		if (temp.contains(FILTER)) {
			int index = temp.indexOf(FILTER);
			int count = FILTER.length();
			output = temp.substring(index + count, index + count + 5);
			// Logger.v("true");
		} else {
			// Logger.v("false");
		}
		return output;
	}

	public static void main(String[] args) {
		String string = "E:\\temp";
		// readFileByLine(string);
		readDir(string);

		// String temp = "fuck fucka --- xxxx - [lineId : 30222]";
		// String output = getValidString(temp);
		// Logger.v(output);
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值