yijiayi_
yijiayi_
2021-01-18 10:20

求帮助 为什么只读取了第一次写入的数据 后面写入的数据写入了但是读不出来

  • java
  • eclipse
/*首先D盘根目录下创建students.txt文件(没有D盘或其它特殊情况的同学可以选择在其它盘符下创建)。 接收控制台输入的学生信息实例化学生对象Student,将对象装入ArrayList<Student>集合中。使用对象流能够将集合写入students.txt文件,也要能从students.txt文件中反序列化得到集合,进而获得学生的信息。 完成复制students.txt功能。复制后的文件与students.txt放在相同目录下,名为students拷贝.txt。(二)首先D盘根目录下创建students.txt文件(没有D盘或其它特殊情况的同学可以选择在其它盘符下创建)。 (三)接收控制台输入的学生信息实例化学生对象Student,将对象装入ArrayList<Student>集合中。使用对象流能够将集合写入students.txt文件,也要能从students.txt文件中反序列化得到集合,进而获得学生的信息。(四) 完成复制students.txt功能。复制后的文件与students.txt放在相同目录下,名为students拷贝.txt。我写的代码 为什么读取时只读取了第一次输入的数据啊 以后输入的读取不出来 拜托*/


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test1 {
       

	public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
		
		Scanner sc=new Scanner(System.in);		
		FileOutputStream file=new FileOutputStream("students.txt");
		while(true) {
				System.out.println("请选择序号:1.向文件写入学生信息 2.读文件显示学生信息 3.退出");
				int n=sc.nextInt();
				List<Student> list=new ArrayList<>();
				switch (n) {
				case 1: 
					ObjectOutputStream oos=new ObjectOutputStream(file);
					System.out.println("请输入学生的姓名,年龄和性别逗号分隔(例如:张三,12,男)");
					String all=sc.next();
					String arr[]=all.split(",");
					String name=arr[0];					
					int	age=Integer.parseInt(arr[1]);					
					String gender=arr[2];						
					list.add(new Student(name,age,gender));					
					oos.writeObject(list);
					oos.flush();					
					if(oos!=null) {
						oos.close();	
					}				
					break;
				case 2:
					ObjectInputStream ois=new ObjectInputStream(new FileInputStream("students.txt"));
					List<Student> list2=(List<Student>)ois.readObject();
					for (Student student : list2) {
						System.out.println(student);
					}
					
					break;
				case 3:
					ObjectInputStream newois=new ObjectInputStream(new FileInputStream("students.txt"));
					ObjectOutputStream newoos=new ObjectOutputStream(new FileOutputStream("students拷贝.txt"));
					newoos.writeObject(newois);
					System.exit(0);
					break;
				default:
					System.out.println("输入错误");
				
				}
		}
	}

}
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

3条回答