从ArrayList写入文件

时间:2013-12-04 15:03:21

标签: java arraylist

我正在尝试将ArrayList写入java中的文件。这就是我在主要类中所做的:

要将字符串写入ArrayList,我会这样做:

list.add(String);

然后,将其写入文件:

readWrite.writing(list);

列表是:List<String> list = new ArrayList<String>();

readWrite对此类的引用,其中我定义了读取/写入文件的方法:

 public void writing(ArrayList listToWrite) throws IOException {
    fileOutPutStream = new FileOutputStream (file);
    write = new ObjectOutputStream (fileOutPutStream);
    for (int i=0; i<=listToWrite.size(); i++){
        write.writeObject(listToWrite.get(i));
    }
    write.close();
}

在控制台上尝试时,我遇到了这个例外:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at //*I GET REFERENCED TO THIS LINE IN THE CODE ABOVE:* **write.writeObject(listToWrite.get(i));**

3 个答案:

答案 0 :(得分:3)

小心你的限制:使用<=,你可以在列表末尾找到一个项目。

for (int i=0; i<listToWrite.size(); i++){

然后再次注意ArrayList本身是可序列化的。您可以在不循环的情况下将其写入文件:

write = new ObjectOutputStream(fileOutPutStream);
write.writeObject(listToWrite);
write.close();

答案 1 :(得分:2)

可能最好还是选择:

for (String str : listToWrite){
    // DO WORK HERE
}

通过这种方式,您不必担心所有混乱的索引业务。

答案 2 :(得分:1)

另一个解决方案也是:

BufferedWriter outputWriter = new BufferedWriter(new FileWriter(filename));
outputWriter.write(Arrays.toString(array));