由于这个文件比较大. 我就不传上了.
大致内容是(txt文件)
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:47:37|A
923636|13000000000|-cxby1|2008-11-05 16:46:43|A
923636|13000000000|-cxby1|2008-09-11 11:30:00|C
923636|13000000000|-cxby1|2008-11-05 16:10:34|A
923636|13000000000|-cxby1|2008-11-05 16:31:24|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:55:56|A
923636|13000000000|-cxby1|2008-11-05 16:18:36|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|AA.数据统计:
1.统计A类型的用户数量,信息
2.统计B类型的用户数量,信息
3.统计C类型的用户数量,信息
B.类型输出到文件
1.输出所有A类型的用户到指定文件,并时间排序
2.输出所有B类型的用户到指定文件,并时间排序
3.输出所有C类型的用户到指定文件,并时间排序
大致内容是(txt文件)
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:47:37|A
923636|13000000000|-cxby1|2008-11-05 16:46:43|A
923636|13000000000|-cxby1|2008-09-11 11:30:00|C
923636|13000000000|-cxby1|2008-11-05 16:10:34|A
923636|13000000000|-cxby1|2008-11-05 16:31:24|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:55:56|A
923636|13000000000|-cxby1|2008-11-05 16:18:36|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|AA.数据统计:
1.统计A类型的用户数量,信息
2.统计B类型的用户数量,信息
3.统计C类型的用户数量,信息
B.类型输出到文件
1.输出所有A类型的用户到指定文件,并时间排序
2.输出所有B类型的用户到指定文件,并时间排序
3.输出所有C类型的用户到指定文件,并时间排序
BufferedReader br=null;
int numA=0;
int numB=0;
int numC=0;
File file=new File("c:\\test.txt");
try {
br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));//获得文件流
String line = null;
while ((line = br.readLine()) != null) {//读取一行
String[] strArray= line.split("|"));
}
if(A.equals(strArray[strArray.length-1])){
numA++;
}else if(B.equals(strArray[strArray.length-1])){
numB++;
}else if(C.equals(strArray[strArray.length-1])){
numC++;
}
}
} finally {
if (br != null) {
br.close();
}
}
}
BufferedReader br=null;
int numA=0;
int numB=0;
int numC=0;
File file=new File("c:\\test.txt");
try {
br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));//获得文件流
String line = null;
while ((line = br.readLine()) != null) {//读取一行
String[] strArray= line.split("|"));
}
if("A".equals(strArray[strArray.length-1])){
numA++;
}else if("B".equals(strArray[strArray.length-1])){
numB++;
}else if("C".equals(strArray[strArray.length-1])){
numC++;
}
}
} finally {
if (br != null) {
br.close();
}
}
}
numA++;
}else if("B".equals(strArray[strArray.length-1])){
numB++;
}else if("C".equals(strArray[strArray.length-1])){
numC++;
这几个地方好象有问题。 strArray[strArray ```
package test;import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Map;
import java.util.TreeMap;public class Test {
public static void main(String[] args) {
Map<String, User> map = new TreeMap<String, User>();
// 读取文件
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(
new File("src/test/test.txt")));
String line = "";
while ((line = br.readLine()) != null) {
if (line.trim() != "") {
String[] strings = line.trim().split("\\|");
User user = new User();
user.setField_One(strings[0]);
user.setField_Two(strings[1]);
user.setField_Three(strings[2]);
user.setDate(getDate(strings[3]));
user.setType(strings[4]);
mapAddUser(map, user);
} } } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
for(String type:map.keySet()){
System.out.println("type:"+type+" 数量:"+map.get(type).getCount()+" -- "+map.get(type).getDate().YEAR+"-"
+map.get(type).getDate().MONTH+"-"+map.get(type).getDate().DAY_OF_MONTH+" "
+map.get(type).getDate().HOUR_OF_DAY+":"+map.get(type).getDate().MINUTE+":"+map.get(type).getDate().SECOND);
System.out.println();
} } public static Calendar getDate(String datetime) {
SimpleDateFormat format = new SimpleDateFormat(datetime);
return format.getCalendar();
} public static void mapAddUser(Map<String, User> map, User user) { if (map.containsKey(user.getType())) {// 如果map存在该类型的user,那么该user的count+1
User userTemp = map.get(user.getType());
userTemp.setCount(userTemp.getCount() + 1);
map.put(userTemp.getType(), userTemp);
} else {//map不存在该类型的user,那么就在map中添加该类型的user
map.put(user.getType(), user);
}
}}class User implements Comparable {
private int count;// 用于统计某种类型用户的数量
private String field_One;
private String field_Two;
private String field_Three;
private Calendar date;
private String type; public User() {
this.setCount(1);
} public int getCount() {
return count;
} public void setCount(int count) {
this.count = count;
} public String getField_One() {
return field_One;
} public void setField_One(String field_One) {
this.field_One = field_One;
} public String getField_Two() {
return field_Two;
} public void setField_Two(String field_Two) {
this.field_Two = field_Two;
} public String getField_Three() {
return field_Three;
} public void setField_Three(String field_Three) {
this.field_Three = field_Three;
} public Calendar getDate() {
return date;
} public void setDate(Calendar date) {
this.date = date;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public int compareTo(Object o) {
return (int) (this.getDate().getTimeInMillis() - ((User) o).getDate()
.getTimeInMillis());
}}
+map.get(type).getDate().MONTH+"-"+map.get(type).getDate().DAY_OF_MONTH+" "
+map.get(type).getDate().HOUR_OF_DAY+":"+map.get(type).getDate().MINUTE+":"+map.get(type).getDate().SECOND这里是多余的!
package test;import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;import org.hsqldb.util.ConnectionSetting;public class Test {
public static void main(String[] args) {
Map<String, List<User>> map = new TreeMap<String, List<User>>();
// 读取文件
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(
new File("src/test/test.txt")));
String line = "";
while ((line = br.readLine()) != null) {
if (line.trim() != "") {
String[] strings = line.trim().split("\\|");
User user = new User();
user.setField_One(strings[0]);
user.setField_Two(strings[1]);
user.setField_Three(strings[2]);
user.setDate(getDate(strings[3]));
user.setType(strings[4]);
mapAddUser(map, user);
} } } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
for(String type:map.keySet()){
System.out.println("type:"+type+" 数量:"+map.get(type).size());
System.out.println();
} } public static Calendar getDate(String datetime) {
SimpleDateFormat format = new SimpleDateFormat(datetime);
return format.getCalendar();
} public static void mapAddUser(Map<String, List<User>> map, User user) {
if (map.containsKey(user.getType())) {// 如果map存在该类型的user
List<User> list=map.get(user.getType());
list.add(user);
Collections.sort(list);
map.put(user.getType(), list);
} else {//map不存在该类型的user,那么就在map中添加该类型的user
List<User> list = new ArrayList<User>();
list.add(user);
map.put(user.getType(), list);
}
}}class User implements Comparable {
private String field_One;
private String field_Two;
private String field_Three;
private Calendar date;
private String type; public String getField_One() {
return field_One;
} public void setField_One(String field_One) {
this.field_One = field_One;
} public String getField_Two() {
return field_Two;
} public void setField_Two(String field_Two) {
this.field_Two = field_Two;
} public String getField_Three() {
return field_Three;
} public void setField_Three(String field_Three) {
this.field_Three = field_Three;
} public Calendar getDate() {
return date;
} public void setDate(Calendar date) {
this.date = date;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public int compareTo(Object o) {
return (int) (this.getDate().getTimeInMillis() - ((User) o).getDate()
.getTimeInMillis());
}}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;public class Test {
public static void main(String[] args) {
Map<String, List<User>> map = new TreeMap<String, List<User>>();
// 读取文件
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(
new File("src/test/test.txt")));
String line = "";
while ((line = br.readLine()) != null) {
if (line.trim() != "") {
String[] strings = line.trim().split("\\|");
User user = new User();
user.setField_One(strings[0]);
user.setField_Two(strings[1]);
user.setField_Three(strings[2]);
user.setDate(getDate(strings[3]));
user.setType(strings[4]);
//把user添加到map的List中
mapAddUser(map, user);
//把匹配指定的日期的信息写到指定的文件中
matchDateToFile(user,strings[3],"2008-11-05","src/test/test2.txt");
//matchDateToFile(user,strings[3],"指定日期","指定的文件");可以在这里根据日期多次使用
}
} } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
for(String type:map.keySet()){
System.out.println("type:"+type+" 数量:"+map.get(type).size());//根据List的size就可以获得该类型的总数
System.out.println();
}
}
/**
* 把匹配指定的日期的信息写到指定的文件中
* @param user:对应的信息
* @param date:对应的信息的日期
* @param datetime:指定日期
* @param fileName:指定的文件
*/
public static void matchDateToFile(User user,String date,String datetime,String fileName){
if(date.indexOf(datetime)!= -1){//如果date不包含datetime则等于-1
FileWriter fileWriter = null;
try {
fileWriter =new FileWriter(fileName, true);
fileWriter.write(user.getField_One()+"|"+user.getField_Two()+"|"+user.getField_Three()+"|"+date+"|"+user.getType()+"\r");
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
fileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} /**
* 获得日期
* @param datetime
* @return
*/
public static Calendar getDate(String datetime) {
SimpleDateFormat format = new SimpleDateFormat(datetime);
return format.getCalendar();
} /**
* 把user添加到map的List中
* @param map
* @param user
*/
public static void mapAddUser(Map<String, List<User>> map, User user) {
if (map.containsKey(user.getType())) {// 如果map存在该类型的user
List<User> list=map.get(user.getType());
list.add(user);
Collections.sort(list);
map.put(user.getType(), list);
} else {//map不存在该类型的user,那么就在map中添加该类型的user
List<User> list = new ArrayList<User>();
list.add(user);
map.put(user.getType(), list);
}
}}
/**
* 继承Comparable接口就是为了排序比较
*
* @author qsrock
*
*/
class User implements Comparable,Serializable {
private String field_One;
private String field_Two;
private String field_Three;
private Calendar date;
private String type; public String getField_One() {
return field_One;
} public void setField_One(String field_One) {
this.field_One = field_One;
} public String getField_Two() {
return field_Two;
} public void setField_Two(String field_Two) {
this.field_Two = field_Two;
} public String getField_Three() {
return field_Three;
} public void setField_Three(String field_Three) {
this.field_Three = field_Three;
} public Calendar getDate() {
return date;
} public void setDate(Calendar date) {
this.date = date;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public int compareTo(Object o) {
return (int) (this.getDate().getTimeInMillis() - ((User) o).getDate().getTimeInMillis());
}}
package test;import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class Test2 {
public static void main(String[] args) { // 读取文件
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(
new File("src/test/test.txt")));
String line = "";
while ((line = br.readLine()) != null) {
if (line.trim() != "") {
String[] strings = line.trim().split("\\|"); // 把匹配指定的日期的信息写到指定的文件中
matchDateToFile(line, strings[3], "2008-11-05",
"src/test/test3.txt");
// matchDateToFile(line,strings[3],"指定日期","指定的文件");可以在这里根据日期多次使用
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 把匹配指定的日期的信息写到指定的文件中
*
* @param line:对应的信息
* @param date:对应的信息的日期
* @param datetime:指定日期
* @param fileName:指定的文件
*/
public static void matchDateToFile(String line, String date,
String datetime, String fileName) {
if (date.indexOf(datetime) != -1) {// 如果date不包含datetime则等于-1
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(fileName, true);
fileWriter.write(line + "\r");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}}
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class Test2 {
public static void main(String[] args) { BufferedReader br = null;
FileWriter fileWriter = null;
try {
br = new BufferedReader(new FileReader(
new File("src/test/test.txt")));
String line = "";
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
if (line.trim() != "") {
/*
* 不好意思反了一个大问题,很多操作不应该在这里做的我之前没看,这样写很影响效率,所以改了
*/
addDataToStringBuffer(sb,line,"2008-11-05");
}
}
fileWriter = new FileWriter("src/test/test3.txt");
fileWriter.write(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} public static void addDataToStringBuffer(StringBuffer sb,String line,String datetime){
if (line.indexOf(datetime) != -1) {// 如果date不包含datetime则等于-1
sb.append(line+ "\r");
}
}}
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;public class Gl1010_Test { /**
* <p>功能描述:把文件转化成List<Uesr></p>
* @param file
* @return
* @throws Exception
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/
private List<User> getUsersFromFile(File file) throws Exception {
List<User> users = new ArrayList<User>();
BufferedReader reader = new BufferedReader(new FileReader(file));
String oneLine = "";//每一行的数据
while((oneLine=reader.readLine()) != null) {//循环读取每一行
String[] split = oneLine.split("\\|");//用"|"分割字符串
User user = new User();//创建一个新的用户
user.setNumber(split[0].trim().length()==0?0:Integer.parseInt(split[0].trim()));//设置用户的Number值
user.setPhone(split[1].trim());//设置用户的手机号码
user.setType(split[2].trim());//设置用户的类型
String dateStr = split[3].trim();//
if(dateStr.length()>0) {
Date createDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr);
user.setCreateDate(createDate);//设置用户的创建日期
}
user.setName(split[4].trim());//设置用户的名称
users.add(user);//把用户加入到一个List中,返回用
}
return users;
}
/**
* <p>功能描述:通过用户名输出文件</p>
* @param userName
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/
public void outFileByUserName(List<User> users, String userName, String filepath) throws Exception {
if(users != null) {
this.orderUsers(users);
StringBuilder sb = new StringBuilder();
for(User user : users) {
if(user.getName().equals(userName))//等于输入的名字的用户
sb.append(user.getNumber()).append("|")
.append(user.getPhone()).append("|")
.append(user.getType()).append("|")
.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate())).append("|")
.append(user.getName()).append("\r\n");
}
if(sb.length() > 0) {
FileWriter writer = new FileWriter(new File(filepath));
writer.write(sb.toString());
writer.flush();
}
}
}
/**
* <p>功能描述:通过时间进行排序</p>
* @param users
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/
private void orderUsers(List<User> users) {
if(users != null) {
Collections.sort(users, new Comparator() {
public int compare(Object o1, Object o2) {
User user1 = (User) o1;
User user2 = (User) o2;
return user1.getCreateDate().compareTo(user2.getCreateDate());
}
});
}
}
/**
* <p>功能描述:测试主方法</p>
* @param args
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/ public static void main(String[] args) {
System.out.println("程序开始--->"+System.currentTimeMillis());
Gl1010_Test test = new Gl1010_Test();
try {
List<User> users = test.getUsersFromFile(new File("d:/users.txt"));
test.outFileByUserName(users,"A","d:/A.txt");
test.outFileByUserName(users,"B","d:/B.txt");
test.outFileByUserName(users,"C","d:/C.txt");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("程序结束--->"+System.currentTimeMillis());
}
class User {
private String name = "";//保存A,B,C用户名称
private int number = 0;//保存923636,不知道干什么的,所以起的名字不好
private String phone = "";//保存13000000000,用户的手机号码
private String type = "";//保存-cxby1,用户类型,这里是程序编译类型
private Date createDate = null;//保存2008-09-27 10:00:00,用户创建日期
/*****************************************************************
* 下面是上面属性的Getter和Setter方法
******************************************************************/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}}