以文本格式存储对象数组(使用PrintWriter、Scanner)

对象文件:

public class Student {
 
 private String number;
 
 private String name;
 
 private String sex;
 
 private int age;
 
 private GregorianCalendar birthDate;

 public String getNumber() {
  return number;
 }

 public void setNumber(String number) {
  this.number = number;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getSex() {
  return sex;
 }

 public void setSex(String sex) {
  this.sex = sex;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public GregorianCalendar getBirthDate() {
  return birthDate;
 }

 public void setBirthDate(GregorianCalendar birthDate) {
  this.birthDate = birthDate;
 }
 
}

实现类文件:

public class StudentTest {

 public static void writeDateToFile(Student[] students, PrintWriter out) {

  int count = students.length;

  if (count <= 0 || out == null) {

   return;

  }

  out.println(count);

  for (int i = 0; i < count; i++) {

   Student student = students[i];

   StringBuffer info = new StringBuffer();

   info.append(student.getNumber());
   info.append("|");
   info.append(student.getName());
   info.append("|");
   info.append(student.getSex());
   info.append("|");
   info.append(student.getAge());
   info.append("|");
   
   //注意GregorianCalendar获取年、月、日的方法
   info.append(student.getBirthDate().get(Calendar.YEAR));
   info.append("|");
   info.append(student.getBirthDate().get(Calendar.MONTH));
   info.append("|");
   info.append(student.getBirthDate().get(Calendar.DAY_OF_MONTH));

   out.println(info);

  }

  out.close();

 }

 public static Student[] readDateFromFile(Scanner scanner) {

  if (scanner == null) {

   return null;

  }

  int count = scanner.nextInt();

  if (count <= 0) {

   return null;

  }
  
  //注意对象数组中对象的初始化
  Student[] students = new Student[count];

  for (int i = 0; i < students.length; i++) {

   students[i] = new Student();
  }

  
  //注意nextLine()方法的使用
  scanner.nextLine();

  for (int i = 0; i < count; i++) {

   String line = scanner.nextLine();

   String[] tokens = line.split("//|");

   students[i].setNumber(tokens[0]);
   students[i].setName(tokens[1]);
   students[i].setSex(tokens[2]);
   students[i].setAge(Integer.parseInt(tokens[3]));

   int year = Integer.parseInt(tokens[4]);
   int month = Integer.parseInt(tokens[5]);
   int day = Integer.parseInt(tokens[6]);

   students[i].setBirthDate(new GregorianCalendar(year, month, day));

  }

  scanner.close();

  return students;

 }

 public static void main(String[] args) throws FileNotFoundException {

  Student[] students = new Student[3];

  students[0] = new Student();
  students[0].setNumber("0606054120");
  students[0].setName("myr");
  students[0].setSex("男");
  students[0].setAge(24);
  students[0].setBirthDate(new GregorianCalendar(1987, 8, 10));

  students[1] = new Student();
  students[1].setNumber("1616154121");
  students[1].setName("hhl");
  students[1].setSex("女");
  students[1].setAge(25);
  students[1].setBirthDate(new GregorianCalendar(1986, 8, 11));

  students[2] = new Student();
  students[2].setNumber("2626254122");
  students[2].setName("zxx");
  students[2].setSex("女");
  students[2].setAge(26);
  students[2].setBirthDate(new GregorianCalendar(1986, 8, 12));

  Logger.getLogger("com.scanner").info("studnets init end");

  Logger.getLogger("com.scanner").info(
    "dataFlie path :"
      + Thread.currentThread().getContextClassLoader()
        .getResource("com/scanner/students.txt").getPath());

  PrintWriter out = new PrintWriter(Thread.currentThread()
    .getContextClassLoader().getResource("com/scanner/students.txt").getPath());

  Logger.getLogger("com.scanner").info("writeDateToFile begin...");

  writeDateToFile(students, out);

  Logger.getLogger("com.scanner").info("writeDateToFile end");

  Scanner scanner = new Scanner(new File(Thread.currentThread()
    .getContextClassLoader().getResource("com/scanner/students.txt").getPath()));

  Logger.getLogger("com.scanner").info("readDateFromFile begin...");

  readDateFromFile(scanner);

  Logger.getLogger("com.scanner").info("readDateFromFile end");

  for (int i = 0; i < students.length; i++) {

   Student student = students[i];

   System.out.println(student.getNumber() + "  " + student.getName()
     + "  " + student.getSex() + "  " + student.getAge() + "  "
     + student.getBirthDate().get(Calendar.YEAR) + "年"
     + student.getBirthDate().get(Calendar.MONTH) + "月"
     + student.getBirthDate().get(Calendar.DAY_OF_MONTH) + "日");
  }
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值