2012-04-05 107 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()