public class Model { private File file; private ArrayList<Point> points; private ArrayList<ModelListener> listeners; public Model() { file = new File("points.txt"); points = new ArrayList<Point>(); try { FileInputStream fi = new FileInputStream(file); ObjectInputStream in = new ObjectInputStream(fi); for(Point p:points) { p = (Point) in.readObject(); } in.close(); fi.close(); }catch (IOException | ClassNotFoundException i) { System.out.println(i.getMessage()); } listeners = new ArrayList<ModelListener>(); } public void savaData() { try { FileOutputStream fo = new FileOutputStream(file); ObjectOutputStream out = new ObjectOutputStream(fo); for(Point p:points) { out.write(p.x); out.write(p.y); out.close(); fo.close(); } }catch (IOException i) { System.out.println(i.getMessage()); } }
时间: 2023-12-06 15:42:16 浏览: 22
这是一个简单的 Model 类,用于读取和保存点的坐标数据到文件。在构造函数中,它会从文件中读取 Point 对象并添加到 points 列表中。在 saveData() 方法中,它会把 points 列表中的点数据写入到文件中。
需要注意的是,在读取文件时,应该先创建一个空的 Point 对象,然后使用 in.readObject() 方法读取 Point 对象,并将其添加到 points 列表中。在保存文件时,应该使用 ObjectOutputStream 对象进行写操作,并使用 out.writeObject(p) 方法将 Point 对象写入文件中。
此外,该类还使用了观察者模式,即 listeners 列表用于保存所有注册的 ModelListener 对象,以便在数据发生变化时通知它们。
相关问题
public class Model { private File file; private ArrayList<Point> points; private ArrayList<ModelListener> listeners; public Model() { file = new File("points.txt"); points = new ArrayList<Point>(); try { FileInputStream fi = new FileInputStream(file); ObjectInputStream in = new ObjectInputStream(fi); for(Point p:points) { p = (Point) in.readObject(); } in.close(); fi.close(); }catch (IOException | ClassNotFoundException i) { System.out.println(i.getMessage()); } listeners = new ArrayList<ModelListener>(); } public void savaData() { try { FileOutputStream fo = new FileOutputStream(file); ObjectOutputStream out = new ObjectOutputStream(fo); for(Point p:points) { out.writeObject(p); out.close(); fo.close(); } }catch (IOException i) { System.out.println(i.getMessage()); } }
这是一个Java类,名为Model,包含了一些成员变量和方法。它的作用是用来读取和保存文件中的点对象。
其中,file是一个File类型的变量,代表了要读取和保存的文件;points是一个ArrayList<Point>类型的变量,用来存储从文件中读取到的点对象;listeners是一个ArrayList<ModelListener>类型的变量,用来存储该类的监听器。
在构造函数中,Model会先通过file对象创建一个FileInputStream,再通过ObjectInputStream将文件中的点对象读取到points中。
在savaData方法中,Model会先通过file对象创建一个FileOutputStream,再通过ObjectOutputStream将points中的点对象写入到文件中。
需要注意的是,在读取文件和保存文件的时候,需要使用try-catch语句来处理IOException和ClassNotFoundException异常。同时,在写入文件时,需要对每个点对象都调用out.writeObject(p)方法,并在方法结束后关闭流。
private ArrayList<Patient> p = new ArrayList<Patient>();
这是一个Java程序中的变量定义,它定义了一个名为p的ArrayList对象,该对象的元素类型是Patient。ArrayList是一个动态数组,可以用来存储一组对象,而Patient可能是一个表示病人信息的类。在这个变量定义中,使用了泛型,即ArrayList<Patient>,这意味着该ArrayList对象只能存储Patient类型的对象。通过使用ArrayList,可以方便地添加、删除和访问病人信息,而不需要手动管理数组大小。