Android 序列化的存储和读取总结及简单使用攻略
什么是序列化?
在Android开发中,序列化是指将对象转换为字节流的过程,以便可以将其存储在磁盘上或通过网络传输。反序列化则是将字节流转换回对象的过程。通过序列化和反序列化,我们可以方便地将对象保存到本地文件或在不同组件之间传递对象。
序列化的存储和读取过程
存储对象
要将对象序列化并存储到本地文件中,可以按照以下步骤进行操作:
- 创建一个实现了
Serializable
接口的类,该类的对象需要被序列化。 - 创建一个
FileOutputStream
对象,用于将字节流写入文件。 - 创建一个
ObjectOutputStream
对象,并将其与FileOutputStream
对象关联。 - 使用
ObjectOutputStream
的writeObject()
方法将对象写入文件。 - 关闭
ObjectOutputStream
和FileOutputStream
。
下面是一个示例代码:
public class Person implements Serializable {
private String name;
private int age;
// 构造函数和其他方法
// 序列化对象并存储到文件
public void saveToFile(String filePath) {
try {
FileOutputStream fileOut = new FileOutputStream(filePath);
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
objectOut.writeObject(this);
objectOut.close();
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
读取对象
要从存储的文件中读取并反序列化对象,可以按照以下步骤进行操作:
- 创建一个
FileInputStream
对象,用于从文件中读取字节流。 - 创建一个
ObjectInputStream
对象,并将其与FileInputStream
对象关联。 - 使用
ObjectInputStream
的readObject()
方法读取对象。 - 关闭
ObjectInputStream
和FileInputStream
。
下面是一个示例代码:
public class Person implements Serializable {
private String name;
private int age;
// 构造函数和其他方法
// 从文件中读取并反序列化对象
public static Person readFromFile(String filePath) {
Person person = null;
try {
FileInputStream fileIn = new FileInputStream(filePath);
ObjectInputStream objectIn = new ObjectInputStream(fileIn);
person = (Person) objectIn.readObject();
objectIn.close();
fileIn.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return person;
}
}
示例说明
示例1:存储和读取Person对象
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建Person对象
Person person = new Person(\"John\", 25);
// 存储对象到文件
person.saveToFile(getFilesDir() + \"/person.ser\");
// 从文件中读取对象
Person loadedPerson = Person.readFromFile(getFilesDir() + \"/person.ser\");
// 打印读取到的对象信息
Log.d(\"MainActivity\", \"Name: \" + loadedPerson.getName());
Log.d(\"MainActivity\", \"Age: \" + loadedPerson.getAge());
}
}
示例2:存储和读取ArrayList对象
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建ArrayList对象
ArrayList<String> list = new ArrayList<>();
list.add(\"Item 1\");
list.add(\"Item 2\");
list.add(\"Item 3\");
// 存储对象到文件
try {
FileOutputStream fileOut = new FileOutputStream(getFilesDir() + \"/list.ser\");
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
objectOut.writeObject(list);
objectOut.close();
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
// 从文件中读取对象
ArrayList<String> loadedList = null;
try {
FileInputStream fileIn = new FileInputStream(getFilesDir() + \"/list.ser\");
ObjectInputStream objectIn = new ObjectInputStream(fileIn);
loadedList = (ArrayList<String>) objectIn.readObject();
objectIn.close();
fileIn.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
// 打印读取到的对象信息
for (String item : loadedList) {
Log.d(\"MainActivity\", \"Item: \" + item);
}
}
}
以上是关于Android序列化的存储和读取的攻略,通过这些示例代码,你可以了解如何将对象序列化并存储到文件中,以及如何从文件中读取并反序列化对象。希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android 序列化的存储和读取总结及简单使用 - Python技术站