-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が更新され、最後に最後のファイルのみがロードされるたびに発生します。ロードされたすべてのファイルが必要です。お知らせ下さい

ありがとう

4

2 に答える 2

2

この線

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

myRulesIncrループ内では、変数が指すリストが常に上書きされます。これらすべての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() );
}
于 2012-04-05T13:48:13.620 に答える
0

私は標準のリストオブジェクトに慣れていませんが、問題はここにあるようです:

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

毎回新しいリストを作成しているように見えますが、そうでない場合でも、次のノードにインクリメントする必要があると思いますmyRulesIncr = myRulesIncr.next()

于 2012-04-05T13:49:44.460 に答える