我正在尝试将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));**
答案 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));