Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将.dat文件转换为ObservableList?_Java_Listview_Arraylist_Binaryfiles_Observablelist - Fatal编程技术网

Java 如何将.dat文件转换为ObservableList?

Java 如何将.dat文件转换为ObservableList?,java,listview,arraylist,binaryfiles,observablelist,Java,Listview,Arraylist,Binaryfiles,Observablelist,我正在尝试将阵列列表转换为可观察列表,我认为我做得对,但除了主窗格外,没有任何东西真正弹出。我希望读取列表中出现的名称的.dat文件,但是当我运行程序时,除了标题和窗口本身之外,什么都不显示。在使用.dat文件显示名称时,我是否遗漏了什么 public class PeopleBinary extends Application { private ArrayList<Person> people = new ArrayList<>(); private

我正在尝试将阵列列表转换为可观察列表,我认为我做得对,但除了主窗格外,没有任何东西真正弹出。我希望读取列表中出现的名称的.dat文件,但是当我运行程序时,除了标题和窗口本身之外,什么都不显示。在使用.dat文件显示名称时,我是否遗漏了什么

public class PeopleBinary extends Application {
    private ArrayList<Person> people = new ArrayList<>();
    private ObservableList<Person> obserPerson;
    
    public void read() throws Exception {
        ObjectInputStream input = new ObjectInputStream(new FileInputStream("people.dat"));
        try {
            while (input.available() > 0) {
                Person temp = (Person) input.readObject();
                people.add(temp);
            }
            input.close();
        } 
        catch (IOException e) {
            System.out.println("Problem reading file - File will be terminated.");
            System.exit(0);
        }
    }
    
    public void write() {
        try {
            ObjectOutputStream peopleBin = new ObjectOutputStream(new FileOutputStream("people.dat"));
            for (Person p: obserPerson) {
                peopleBin.writeUTF(p.getFirstName());
                peopleBin.writeUTF(p.getLastName());
                peopleBin.writeUTF(p.getCity());
                peopleBin.writeInt(p.getIdNum());
            }
            peopleBin.close();
        } 
        catch (IOException e) {
            System.out.println("Unable to write to file - End of program.");
            System.exit(0);
            e.printStackTrace();
        }
    }

    @Override
    public void start(Stage primaryStage) {
        obserPerson = FXCollections.observableArrayList(people);
        ListView<Person> perList = new ListView<Person>();
        perList.setItems(obserPerson);
        perList.setPrefSize(400, 400);
        perList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
            
        BorderPane mainPane = new BorderPane(); 
        mainPane.setLeft(new ScrollPane(perList));
            
        Scene scene = new Scene(mainPane, 400, 400);
        primaryStage.setTitle("Person Library");
        primaryStage.setScene(scene);
        primaryStage.show();
    }   
公共类PeopleBinary扩展应用程序{
private ArrayList people=new ArrayList();
私人观察者观察者;
public void read()引发异常{
ObjectInputStream输入=新ObjectInputStream(新文件输入流(“people.dat”));
试一试{
while(input.available()>0){
Person temp=(Person)input.readObject();
添加(临时);
}
input.close();
} 
捕获(IOE异常){
System.out.println(“读取文件时出现问题-文件将被终止”);
系统出口(0);
}
}
公共空写(){
试一试{
ObjectOutputStream peopleBin=新的ObjectOutputStream(新文件输出流(“people.dat”));
对于(人员p:观察者){
peopleBin.writeUTF(p.getFirstName());
peopleBin.writeUTF(p.getLastName());
peopleBin.writeUTF(p.getCity());
peopleBin.writeInt(p.getIdNum());
}
peopleBin.close();
} 
捕获(IOE异常){
System.out.println(“无法写入文件-程序结束”);
系统出口(0);
e、 printStackTrace();
}
}
@凌驾
公共无效开始(阶段primaryStage){
obserPerson=FXCollections.observearraylist(人);
ListView perList=新建ListView();
每个列表设置项(观察者);
每个列表的大小(400400);
perList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
BorderPane mainPane=新建BorderPane();
setLeft(新滚动窗格(perList));
场景=新场景(主窗格,400400);
primaryStage.setTitle(“个人库”);
初级阶段。场景(场景);
primaryStage.show();
}