现在要读取一个TXT文件,文件内容如下:
ID   NAME   SEX   RESULT
1    Jack   man   65
2    Marry   female   80
3    Tom    man   90
……
如此等等,要求把性别为男的数据取出来另存道一个txt文件中,请各位高手伸出援助之手!万分感谢!我很苦恼!最好给我代码哦!

解决方案 »

  1.   

    如果你只要做一次,不需要写程序,用脚本吧
    type a.txt | grep man >> b.txt
      

  2.   

    如果你只要做一次,不需要写程序,用脚本吧
    type a.txt | grep man >> b.txt
      

  3.   

    给你简单点代码给你 自己完善一下
    BufferedReader br = 
    new BufferedReader(
                      new InputStreamReader(
                                         new InputStream(source.txt
                                         )
                      )
    );
    String str = br.readline();
    while(str!=null) {
        int index = str.lastIndexOf("man");
        if(index>5){
           System.out.println(str);
          //自己写代码把str复制到来外一个文件
         }
    }
      

  4.   

    楼上的师兄 报错说inputstream是抽象类啦 不能实例化的……我正在查 希望各位雁过留声哈!
      

  5.   

    呵呵
    不好意思,头晕了
    你找一个
    new BufferedReader(
                      new InputStreamReader(
                                         new FileInputStream(source.txt
                                         )
                      )
    );
      

  6.   

    汗楼主一个
    性别为男是man?应该是male吧~~~~
      

  7.   

    private BufferedReader br;
        private BufferedWriter bw;     private void init()
        {
            try
            {
               br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
            }
            catch(Exception e){ e.printStackTrace();}
        }    public Vector read()
        {
            Vector ipVector = new Vector();
            try
            {
                while (-1 != br.read())
                {
                 ipVector.add( br.readLine());
                }
                readClose();    
            }
            catch(Exception e){e.printStackTrace();}
            return ipVector;
        
        public BufferedWriter getBw()
        {
            try
            {
             bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)));
            }
            catch(Exception e){e.printStackTrace();}
            
            return bw;
        }    }能看懂吧,你要的都有啦。判断条件你自己填吧 
      

  8.   

    try{
    BufferedReader in = new BufferedReader(new FileReader("d:\\aa.txt"));
    BufferedWriter out = new BufferedWriter(new FileWriter("d:\\bb.txt"));

    //判断SEX所在的列
    String s = in.readLine();
    int pos;
    StringTokenizer stn = new StringTokenizer(s);
    for(pos = 0; stn.hasMoreElements(); pos++){
    if(((String)stn.nextElement()).equals("SEX"))
    break;
    }

    //写入表头
    out.write(s);
    out.write(System.getProperty("line.separator"));

    while((s = in.readLine())!=null) {
    stn = new StringTokenizer(s);
    for(int i=0; i<pos; i++)
    stn.nextElement();
    if(((String)stn.nextElement()).equals("man")){
    out.write(s);
    out.write(System.getProperty("line.separator"));
    }
    }
    out.close();
    in.close();
    System.out.println(pos);
    }catch (Exception e){
    e.printStackTrace();
    }
      

  9.   

    每次读入一行,单词是用空格隔开,行里包含单词man的把它打印出来就OK了时间关系,不写了
      

  10.   

    楼上的 直接查找子串man不科学吧,
    名字里也可能包含man子串
      

  11.   

    我的这个没有问题

    import java.io.*;
    public class Test

      public static void main(String args[]) throws Exception
      { String s=null;
        FileReader fr = new FileReader("a.txt");  
        BufferedReader br = new BufferedReader(fr);
        FileWriter fw = new FileWriter("b.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        while((s=br.readLine())!=null)
        { 
         System.out.println(s);
          if (s.indexOf("man")!=-1)
             {
               bw.write(s);
               bw.newLine();
              }
          
        }
       br.close();
       bw.close();
      }
      
    }
      

  12.   

    如觉得查找man不科学.你可以将我上面的代码改为
     if (s.indexOf(" man ")!=-1)
    这样够科学了吧?
      

  13.   

    我上面的代码中.
    a.txt表示源文件。
    b.txt表示生成的新文件
      

  14.   

    呵呵  钻个牛角尖,s.indexOf(" man ")仍然不甚科学,万一SEX是最后一个字段,后面没有空格了呢?至少s.indexOf(" man ")不够通用,呵呵~~~~~~
      

  15.   

    可能吗?晕..人家指定了格式的..在man后面有信息的.
    改为一个参数就通用了吧
      

  16.   

    实在不行用正则表达式
    (\\d+)\\t(\\w+)\\tman\\t(\\d+)
      

  17.   

    哎呀一开机就发现好多留言,感动哉,学习ing,再看看各位还有什么高见,就结贴哦!
      

  18.   

    以下是我运行通过的完整代码,楼主拷贝一下就可以用了。
    import java.io.*;
    import java.util.*;class iofile
    {
      private BufferedReader br;
      private BufferedWriter bw;
      private String readFile,writeFile;
      private Vector ipVector;
      
      iofile(String read,String write) //构造函数
      {
        readFile=read;
        writeFile=write;
        ipVector = new Vector();
        try//源文件
        {
          br = new BufferedReader(new InputStreamReader(new FileInputStream(readFile)));
        }
        catch(Exception e){ e.printStackTrace();}
        
        try//目标文件
        {
             bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(writeFile)));
        }
        catch(Exception e){e.printStackTrace();}
      } 
      
      private Vector readLines()//读取源文件中的每一行到Vector中
        {      
          try 
          {
            String s;
            while ( (s=br.readLine())!=null) 
            {
              if(s.lastIndexOf("man")!=-1) 
              ipVector.add(s);
            }
           br.close();
          }
          catch (Exception e) 
          {
            e.printStackTrace();
          }
          return ipVector;
        } 
       
       public void writeLines()
       {
         readLines();     
         int i;
         try
         {
           System.out.println(ipVector.size());
           for (i = 0; i < ipVector.size(); i++) 
           {
             System.out.println((String) ipVector.get(i));
             bw.write( (String) ipVector.get(i));
             bw.write("\r\n");     
           }
           bw.close();
         }
         catch(Exception e){e.printStackTrace();}
         
       }
      
    }public class HH
    {
      public static void main(String args[])
      {
        String source,dest;
        source="D:\\java_home\\iofile\\source.txt";
        dest="D:\\a.txt";
        iofile filter=new iofile(source,dest);
        filter.writeLines();
        
      }
    }
      

  19.   

    楼主,你只需要一个读文件和写文件的代码,判断自己加吧.
    private BufferedReader br;
        private BufferedWriter bw;     private void init()
        {
            try
            {
               br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
            }
            catch(Exception e){ e.printStackTrace();}
        }    public Vector read()
        {
            Vector ipVector = new Vector();
            try
            {
                while (-1 != br.read())
                {
                ipVector.add( br.readLine());
                }
                readClose();    
            }
            catch(Exception e){e.printStackTrace();}
            return ipVector;
        
        public BufferedWriter getBw()
        {
            try
            {
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)));
            }
            catch(Exception e){e.printStackTrace();}
            
            return bw;
        }    }
      

  20.   

    如果源文件里面有如下的一行:
    12   Farmany  female 97
    那么楼上的筛选方法就把这一行也写入了
      

  21.   

    这么多人里,只有我写出了完整的可运行的java程序,楼主多给分哦,不然对不起我哦。
    当然,也谢谢大家,学到了不少东西。