Android保存Serializable数据到本地
16lz
2021-01-23
1.定义一个Student类,实现Serializable接口
public class Student implements Serializable { private Integer id; private String name; //注意定义此字段 public static final long serialVersionUID = 9527L; public Student() { super(); } public Student(Integer id, String name) { super(); this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + "]"; }}
2.模拟数据进行存储并读取,在屏幕上显示。
public class MainActivity extends AppCompatActivity { private TextView tvShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvShow=(TextView)findViewById(R.id.tvShow); testSerializable(); } private void testSerializable() { FileOutputStream fileOutputStream=null; ObjectOutputStream objectOutputStream =null; FileInputStream fileInputStream = null; ObjectInputStream objectInputStream = null; StringBuffer sb=new StringBuffer(); ArrayList studentsArrayList = new ArrayList(); Student student = null; for (int i = 1; i < 5; i++) { student = new Student(i, "人物" + i); studentsArrayList.add(student); } try { //存入数据 File file = new File(Environment.getExternalStorageDirectory().toString() + File.separator +"Test"+File.separator + "data.txt"); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } if (!file.exists()) { file.createNewFile(); } fileOutputStream= new FileOutputStream(file.toString()); objectOutputStream= new ObjectOutputStream(fileOutputStream); objectOutputStream.writeObject(studentsArrayList); //取出数据 fileInputStream = new FileInputStream(file.toString()); objectInputStream = new ObjectInputStream(fileInputStream); ArrayList savedArrayList =(ArrayList) objectInputStream.readObject(); for (int i = 0; i < savedArrayList.size(); i++) { //System.out.println("取出的数据:" + savedArrayList.get(i).toString()); sb.append("取出的数据:"+savedArrayList.get(i).toString()+"\r\n"); } tvShow.setText(sb.toString()); } catch (Exception e) { // TODO: handle exception }finally{ if (objectOutputStream!=null) { try { objectOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileOutputStream!=null) { try { fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (objectInputStream!=null) { try { objectInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileInputStream!=null) { try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
3.添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
4.效果如下图所示。
更多相关文章
- 安卓课程二十三 ImageView实现适屏和裁剪图片
- Android 自定义ListView实现Item左右滑动删除
- Android通过HTTP协议实现上传文件数据
- Android一个ListView列表之中插入两种不同的数据
- 【android】把view保存为图片的方法以及解决保存后图片背景变黑
- 适配 Android10 内部存储图片显示问题
- Android 将数据库文件保存至sdcard中