2012-04-05 100 views
-1

^h傢伙,列表操作邏輯需要幫助

我有一段代碼,這會尋找一些類似的.ser文件,並將其加載到一個列表

的文件(rulesIncr1.ser, rulesIncr2.ser,rulesIncr3.ser ......等等)

立即加載所有我寫了下面的邏輯文件

String defaultfilename = "rulesincr"; 
int i=1; 
       String incrFile; 
       //THE FOLLOWING CODE WILL CHECK FOR ANY NU8MBER OF INCR RULES FILE IN THE LOCATION AND ADD THEM TO A RULE MODEL LIST 
       do 
       { 
        String tempincr = new Integer(i).toString(); 
        incrFile = defaultfilename.concat(tempincr).concat(".ser"); 
        FileInputStream fis= new FileInputStream(filePath.concat(incrFile)); 
        ObjectInputStream inStreamIncr = new ObjectInputStream(fis); 
        myRulesIncr = (List<RuleModel>)inStreamIncr.readObject(); 
        i++; 
       } 

       while(new File(filePath.concat(incrFile)).isFile()); 

現在我面臨的問題是每每一次我myRulesIncr將被刷新,最後只加載最後一個文件。我需要擁有所有加載的文件。請指教

感謝

回答

2

在循環總是會覆蓋列表到該myRulesIncr變量指向該行

myRulesIncr = (List<RuleModel>)inStreamIncr.readObject(); 

。如果你想所有這些RuleModel實例添加到myRulesIncr你應該有不熟悉標準列表對象像

List<RuleModel> myRulesIncr = new ArrayList<RuleModel>(); 

while{ 
//your while loop without the 
//myRulesIncr = (List<RuleModel>)inStreamIncr.readObject(); line 
myRules.addAll((List<RuleModel>)inStreamIncr.readObject()); 
} 
+0

感謝羅賓,但eclipse警告以下空指針訪問:變量myRulesIncr只能在t他的位置 – jeyaprakash 2012-04-05 13:54:59

+0

然後你還沒有初始化變量。這個消息很清楚 – Robin 2012-04-05 13:58:47

0

林,但這個問題似乎在這裏:

myRulesIncr = (List<RuleModel>)inStreamIncr.readObject(); 

你似乎是使一個新的列表每次,即使不是我相信你需要增加到下一個節點,即myRulesIncr = myRulesIncr.next()