我想读取一个文件detail.dat,里面的内容是这样的
20010510|10000300||MAEKAWA_TEST tok1-ope1|0|DP00050|SOHIN_NAME101|17|28000|476000|5|999999
20010510|10000300||MAEKAWA_TEST tok1-ope1|0|DP00060|SOHIN_NAME102|9|30000|270000|5|999999
20010510|10000300||MAEKAWA_TEST tok1-ope1|0|DP10052||603927|0.18|108706|5|999999
20010510|10000300||MAEKAWA_TEST tok1-ope2|0|DP00050||17|28000|476000|5|890244
要做的是把数据逐行读取出来,并把每行的数据根据“|”分离,显示出来
还有统计一下这个文件是多少行
谢谢大家指点,小弟新手

解决方案 »

  1.   

    try {
    BufferedReader in = new BufferedReader (new FileReader("路径\\detail.dat"));
    String strLine="";
    String[] everyLineContent;
    int lineCount=0;
    short i =0;
    while ((strLine=in.readLine())!=null){//循环读出每行
      everyLineContent = strLine.split("|");
      for (i =0 ; i <everyLineContent.length ; i++){
     System.out.println(everyLineContent[i]);
      }
      lineCount = lineCount+1+(i==0?0:i-1);
    }
    } catch (IOException e){
    System.out.println(e);
    }
      

  2.   

    FileReader reader = new FileReader(new File("d:/detail.dat"));
    BufferedReader bReader = new BufferedReader(reader);
    String s = "";
    String[] ss;
    int count = 0;
    while (true) {
    s = bReader.readLine();
    if (s != null) {
    i++;//记录行数
    ss = s.split("[|]+");
    for (int j = 0; j < ss.length; j++) {
    System.out.print(ss[j] + " ");//每个记录隔一个空格打印出来
    }
    } else {
    break;
    }
    System.out.println();
    }
    reader.close();
    bReader.close();
    System.out.println(i);//显示行数
      

  3.   

    ArrayList list = new ArrayList();
    BufferedReader reader;
    reader = new BufferedReader( new FileReader(nt2000.sysConfig.CommonConfig.ProjectPath + "/ic.dat"));
    while(1){
        String portstr = reader.readLine();
        if (psrtstr == null)
            break;
        list.add(portstr);  //把每行放进arraylist中,已不包含加车换行符。
    }
    int len = list.size();  //行数
    要分离"|":String[] substrs = list.get(0).split("\\|");这样,就把每行分出的子字符串放在substrs中了。
    未经测试。
      

  4.   

    应该是:
    ...
    while(true)
    ...
    还有,要捕捉异常。
      

  5.   

    测试完全正确:
    import java.io.*;
    public class ReadFileTest { public static void main(String[] args)throws Exception {
    String fileName="D:\\detail.dat";
    File objFile=new File(fileName);
    if(objFile.exists()){
    FileReader objRedfile=new FileReader(objFile);
    BufferedReader bReader=new BufferedReader(objRedfile);
    String str="";
    String[] ss;
    int count=0;
    while((str=bReader.readLine())!=null){
    count++;
    ss=str.split("[|]+");
    for(int i=0;i<ss.length;i++){
    System.out.print(ss[i]+",");
    }
    System.out.println(" ");

    }
    bReader.close();
    objRedfile.close();
    System.out.println(" ");
    System.out.println("********************************");
    System.out.println("总行数为:"+Integer.toString(count));
    System.out.println("********************************");
    }else{
    System.out.println("the file cannot be found...");
    } }
    }
      

  6.   

    输出结果如下:(是你想要的吗?)
    20010510,10000300,MAEKAWA_TEST tok1-ope1,0,DP00050,SOHIN_NAME101,17,28000,476000,5,999999, 
    20010510,10000300,MAEKAWA_TEST tok1-ope1,0,DP00060,SOHIN_NAME102,9,30000,270000,5,999999, 
    20010510,10000300,MAEKAWA_TEST tok1-ope1,0,DP10052,603927,0.18,108706,5,999999, 
    20010510,10000300,MAEKAWA_TEST tok1-ope2,0,DP00050,17,28000,476000,5,890244, 
     
    ********************************
    总行数为:4
    ********************************