我是才学了几个星期的菜鸟,也觉得很有兴趣学.经常看视频.跟着看的时候觉得思路挺清晰的.但把视频关了.自己写的时候完全就傻了.我昨天也提过问。还是关于这个的。有很多好心也帮我写了。但是我拿到程序就蒙了,好多东西我都没学过。也不知道怎么查。我希望能得到程序的同时也能了解下思路。不是我没探索精神,主要这个东西要得急,也不够时间我自己去摸索.所以我才来求助的.
当看到这个需求我再次傻了.不知道该怎么去分析.脑袋里面就只知道拿流套到文件上.然后往外一行行写的时候来分析是A,B,C 和日期..
还是不知道怎么在一段代码里面去实现下面的这些功能.
我自己觉得我还是多用心的在学.就是老是思路不明确..悲哀啊...今天周末,如果你有时间的话指导一下小弟吧.真的很想弄明白.不然老觉得心里堵得慌.
在此我先谢谢了..我的QQ : 13611377文件:*.txt , 
大小:  26M  ,
里面的内容全是这样的数据(我就不全部发出来了,都是用户的信息):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|A A.数据统计:
1.统计A类型的用户数量,信息
2.统计B类型的用户数量,信息
3.统计C类型的用户数量,信息
B.类型输出到文件
1.输出所有A类型的用户到指定文件
2.输出所有B类型的用户到指定文件
3.输出所有C类型的用户到指定文件
4.输出指定ServiceID(就是-cxby1所在列)的用户到指定文件
4.输出指定年月日的用户信息到指定文件
          (比如我想把这里面日期在2008-11-05这天的信息全部导到另外一个TXT文件里面去)
C.查询用户
1.查询号码,打印用户信息

解决方案 »

  1.   

    在网络上查一下看用txt文件作为数据源,用JDO的方法能不能实现,
    VB是支持txt文件作为数据源,但不知Java支持不.
    要是不支持那就只有自己写个类来处理,只是效率会差点
      

  2.   

    用Tokernizer将这些数据一行行地全分开,然后一个个分析
      

  3.   

    我已经给你回复了啊import java.io.BufferedReader;
    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;
            }
            
        }}
      

  4.   

    以行读取文件 然后分析每行的内容 假如储存在数组中
    h[i][1] h[i][2]h[i][3] h[i][4] h[i][5] 分别储存923636|号码|-cxby1|日期|类型5部分问题A:
    然后数h[i][5]="B"有多少个
    for(i=0;...;i++){
    if(h[i][5]=="B"){s++;}
    }问题B:
    在输出的时候检查每行的h[i][5]等于"B"再输出
      

  5.   

    你需要把List<User> users = test.getUsersFromFile(new File("d:/users.txt"));
    这里的d:/users.txt改成你的那个文件的路径才可以
      

  6.   

    输出的路径是test.outFileByUserName(users,"A","d:/A.txt"); 
    test.outFileByUserName(users,"B","d:/B.txt"); 
    test.outFileByUserName(users,"C","d:/C.txt"); 
    都在D盘的根目录下