一直呆在这几天,这一切似乎对我来说。我目前甚至无法看到在Android设备监视器中创建的文件。如何读取/写入内部Android文件的类对象?
我试图写一个事件对象到一个文件一次,并在任何给定的时间回读所有的事件。
事件类
public class Event implements Serializable {
private static final long serialVersionUID = -29238982928391l;
public String time;
public String drug;
public Date date;
public int dose;
SimpleDateFormat format = new SimpleDateFormat("MM-dd");
public Event(Date date, String time, String drug, int dose){
this.time = time;
this.drug = drug;
this.date = date;
this.dose = dose;
}
活动类 < - 控制所有事件,这个类是使用我的MainActivity类别
public class Events {
ArrayList<Event> eventslist = new ArrayList<Event>();
String saveFileName = "calendarEvents.data";
Context context;
public Events(Context ctx) {
super();
context = ctx;
}
// Reads the events for a given day
public ArrayList<Event> readData(Date event_date) {
ArrayList<Event> dayEvents = new ArrayList<Event>();
for (Event entry : eventslist) {
Date d = entry.getDate();
if(d.compareTo(event_date) == 0){
dayEvents.add(entry);
}
}
return dayEvents;
}
public ArrayList<Event> readAllEvents() {
return eventslist;
}
//inserts an event into the array
// this is what calls save()
public int insertData(Date date, String time, String drug, int dose) {
Event e = new Event(date, time, drug, dose);
try {
save(saveFileName, e);
eventslist.add(e);
} catch (Exception ex){
ex.printStackTrace();
return -1;
}
return 1;
}
//My actual write function
public void save(String filename, Event theObject) {
FileOutputStream fos;
ObjectOutputStream oos;
try {
fos = context.openFileOutput(filename, Context.MODE_APPEND);
oos = new ObjectOutputStream(fos);
theObject.writeObject(oos);
oos.close();
fos.close();
} catch(IOException e){
e.printStackTrace();
}
}
//my read function, not called in this example
public ArrayList<Event> readFile(String filename, Context ctx) {
FileInputStream fis;
ObjectInputStream ois;
ArrayList<Event> ev = new ArrayList<Event>();
try {
fis = ctx.openFileInput(filename);
ois = new ObjectInputStream(fis);
while(true) {
try{
ois.readObject();
//ev.add();
} catch (NullPointerException | EOFException e){
e.printStackTrace();
ois.close();
break;
}
}
ois.close();
fis.close();
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
return ev;
}
谢谢,我改变了你说的话,它可能有所帮助。我似乎不断在我的日历上显示一个事件,而其他人则不保存/加载。明天我需要看看这个更近的。 – BetaBiceps