2013-10-30 29 views
-2
public void readTemplateInput() { 
     BufferedReader inputfile = null;  
     try { 
      File file = new File("D:\\inputparam.txt"); 
      inputfile = new BufferedReader(new FileReader(file)); 
      String line = inputfile.readLine(); 
      if(line!=null){ 
      StringTokenizer reporttokens = new StringTokenizer(line,"-"); 
      while (reporttokens.hasMoreTokens()) {     
       String tokens= reporttokens.nextToken().toString(); 
       reportslist=new ArrayList(); 
       reportslist.add(tokens); 
       getReportTokens(reportslist); 
       }   
      } 
    } catch (FileNotFoundException ex) { 
      Logger.getLogger(InputTemplateData.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (IOException ex) { 
      Logger.getLogger(InputTemplateData.class.getName()).log(Level.SEVERE, null, ex); 
     }  
     finally { 
      try { 
       inputfile.close(); 
      } catch (IOException ex) { 
       Logger.getLogger(InputTemplateData.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    } 

    public void getReportTokens(List reportslist) { 
     List reports=reportslist; 

} 

在这里,我需要得到第一个列表,需要在该列表分配给一个字符串,并需要tokenization.This过程将重复一样分配给一个字符串列表2标记化而这n个,以及list3 ......依此类推.txt文件。 我没有想法解决这个问题。 任何机构都有助于获得正确的代码。如何来标记列表值倍

+0

您正在逐行读取文件,您尝试使用分隔符“ - ”标记行,但是逐行读取文件实际上将行使分隔符“ - ”在这种情况下无用 –

+0

你会给我一些关于this.will代码将添加一些代码,以便我将遵循 –

+1

多一个注意,StringTokenizer是一个遗留类..使用.split()函数inst ead直接在字符串上 –

回答

1

这里是你的代码被修改为使用split()来代替,除了我不知道你的数据是如何被实际格式化的,以及它应该如何被解析。代码会将所有行与我在你的例子中可以看到的所有分隔符最后一个列表..

public ArrayList<String> readTemplateInput() 
{ 

    BufferedReader inputfile = null; 
    ArrayList<String> finalList = null; 

    try 
    { 
     File file = new File("D:\\inputparam.txt"); 
     inputfile = new BufferedReader(new FileReader(file)); 
     String line = inputfile.readLine(); 

      finalList = new ArrayList<String>(); 

     if(line!=null) 
     { 
      String[] listA = line.split("-"); 

      ArrayList<String> listB = new ArrayList<String>(); 

      for (String str : listA) 
      { 
       listB.addAll(str.split("#").asList()); 
      } 

      ArrayList<String> listC = new ArrayList<String>(); 

      for (String str : listB) 
      { 
       listC.addAll(str.split("$").asList()); 
      } 

      ArrayList<String> listD = new ArrayList<String>(); 

      for (String str : listC) 
      { 
       listD.addAll(str.split("\(|\)").asList()); 
      } 

      ArrayList<String> listE = new ArrayList<String>(); 

      for (String str : listD) 
      { 
       listE.addAll(str.split(",").asList()); 
      } 

      // filter 

      for (String str : listE) 
      { 
       str.replaceAll("\s+"," "); 

      } 

      for (int i=0; i<listE.size(); i++) 
      { 
       if(listE.get(i).equals(" ") || listE.get(i).equals("")) 
       { 
        listE.remove(i); 
        i--; 
       } 
      } 

        finalList.addAll(listE); 
     } 

    } 
    catch (FileNotFoundException ex) 
    { 
     Logger.getLogger(InputTemplateData.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    catch (IOException ex) 
    { 
     Logger.getLogger(InputTemplateData.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    finally 
    { 
     try 
     { 
      inputfile.close(); 
     } 
     catch (IOException ex) 
     { 
      Logger.getLogger(InputTemplateData.class.getName()).log(Level.SEVERE, null, ex); 
     } 

      return finalList; 
    } 

} 
+0

感谢您的答案。解析过程如下。首先是将字符串分开 - 然后是由$分隔的新字符串,然后是由#分隔的新字符串,或者,你会对此有所帮助 –