2013-10-30 31 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

感謝您的答案。解析過程如下。首先是將字符串分開 - 然後是由$分隔的新字符串,然後是由#分隔的新字符串,或者,你會對此有所幫助 –