Serializable使用
android的另一个序列化Serializable比较简单,实现它的接口,然后生成所有成员变量的方法,再生成所有成员变量的getset方法,serializable可以存储对象,所以下面代码传递了一个man对象,然后保存在外置内存卡路径/sdcard/AAAData/output.txt如果没有output.txt文件,打开输出流后会自动生成一个空文件然后写入此空文件,后缀.txt让系统默认用text文本打开.点击按钮打开另一个activity然后反序列化读取output.txt文件.最后不要忘了在配置文件中申明读取文件权限,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />运行后手机设置也要打开存储权限,再运行一次就好
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { Man man = new Man("huhx", "123456"); Person person = new Person(man, "刘力", 21); ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(new File("/sdcard/AAAData/output.txt"))); objectOutputStream.writeObject("string"); objectOutputStream.writeObject(person); objectOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, Main2Activity.class)); } }); } }
上面是第一个activity代码
public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); try { ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("/sdcard/AAAData/output.txt")); String string = (String) objectInputStream.readObject(); Person person = (Person) objectInputStream.readObject(); objectInputStream.close(); System.out.println(string + ", age: " + person.getAge() + ", man username: " + person.getMan().getUsername()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
上面是第二个activity代码
public class Person implements Serializable { private static final long serialVersionUID = 1L; private Man man; private String username; private int age; public Person() { System.out.println("person constru"); } public Person(Man man, String username, int age) { this.man = man; this.username = username; this.age = age; } public Man getMan() { return man; } public void setMan(Man man) { this.man = man; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
上面是自定义类Person代码
public class Man implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; public Man(String username, String password) { this.username = username; this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
上面是自定义对象man代码