gpt4 book ai didi

java - 以二进制格式保存数组

转载 作者:行者123 更新时间:2023-12-01 10:37:52 28 4
gpt4 key购买 nike

我有以下数组

import java.io.*;
import java.util.*;
import java.util.logging.*;

public class SaveData{
int counter =1;
public void saveTheData(ArrayList<myClass> myClassObj){
try{
FileOutputStream fout = new FileOutputStream(counter+"SaveGame.ser", true);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(myClassObj.toString() );
counter++;
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

抱歉,我是 Java 新手,请原谅我提出任何愚蠢的问题。上面的代码以 ser 格式保存数组。我需要将其保存为二进制格式,然后也能够在以后从二进制格式中读取它。我不知道你是怎么做到的

非常感谢任何帮助

最佳答案

正如其他人所说,如果您想编写二进制文件,请不要在序列化对象时使用 toString() 方法。您还需要在class myClass 中实现Serializable。然后反序列化就像序列化一样简单,使用ObjectInputStream.readObject() .

生成的 SaveData 类应如下所示:

import java.io.*;
import java.util.*;

public class SaveData {
int counter = 1;

public void saveTheData(ArrayList<myClass> myClassObj) {
try {
FileOutputStream fout = new FileOutputStream(counter
+ "SaveGame.ser", true);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(myClassObj);
counter++;
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public ArrayList<myClass> loadTheData(int saveNum) {
try {
FileInputStream fin = new FileInputStream(saveNum + "SaveGame.ser");
ObjectInputStream ois = new ObjectInputStream(fin);
ArrayList<myClass> myClassObj = (ArrayList<myClass>) ois.readObject();
ois.close();
return myClassObj;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

myClass 看起来像这样:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class myClass implements Serializable {
private static final long serialVersionUID = /* some UID */;
/* ...
* class properties
*/

myClass(/* args */) {
// Initialize
}

/* ...
* class methods
*/

private void writeObject(ObjectOutputStream o) throws IOException {
// Write out to the stream
}

private void readObject(ObjectInputStream o) throws IOException,
ClassNotFoundException {
// Read in and validate from the stream
}
}

关于java - 以二进制格式保存数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571278/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com