美文网首页
实验2---文件与IO流

实验2---文件与IO流

作者: Riya | 来源:发表于2020-02-24 13:23 被阅读0次

一、实验目的

本实验的目的是掌握File类的使用,完成对象序列化与反序列化。

二、实验内容

给定一个Student类,

public class Student {
    private int number;
    private String name;
}

完成这个类的设计,实现数据成员的Get和Set函数编写以及toString()函数编写,编写程序多个Student对象存储在数组时以及多个Student对象存储在ArrayList数组时,使用文件实现Student对象数组和ArrayList数组的读和写操作。

三、实验步骤

  1. 创建集合对象s(全局变量)
  2. 创建一个ObjectOutputStream对象输出流obs
  3. 创建学生对象student1,student2,student3
  4. 添加对象到集合s
  5. 利用toString() 把集合转成数组objs[]
  6. 利用tostring()函数将集合中的对象转为数组,对象的个数即为数组的长度,写一个for循环,将数组元素依次强制转换为Student对象并写入文件中。
  7. 创建一个ObjectInputStream对象输入流ois
  8. 利用全局变量集合s的大小,写一个for循环,从ObjectInputStream对象输入流中依次读取对象,并强制转换成Student对象,并依次输出各对象信息。

四、实验结果

五、实验小结

这次实验的难点在于如何写两个循环,一个能够将对象依次写入文件中,另一个能够从文件中依次读取文件内容。第一个循环:利用tostring()函数将集合中的对象转为数组,对象的个数即为数组的长度,写一个for循环,将数组元素依次强制转换为Student对象并写入文件中。第二个循环:利用全局变量集合s的大小写一个for循环 ,从ObjectInputStream对象输入流中依次读取对象,并强制转换成Student对象,并依次输出各对象信息。
这次实验还有一个需要注意的点:在写文件地址的时候,一定要仔细!差了一个空格都会导致整个文件无法读取!
"/Users/zhuxiaoyue/Desktop/student.txt "
❌这样是不行的,student.txt后不能有一个空格!
以下为正确格式:
"/Users/zhuxiaoyue/Desktop/student.txt"

六.附录

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;

public class ObjectOutputStreamDemo {

  public static void main(String[] args) {
  //创建集合对象
  Collection s= new ArrayList();
  // 创建一个ObjectOutputStream对象输出流
  try (ObjectOutputStream obs = new ObjectOutputStream(new             
  FileOutputStream("/Users/zhuxiaoyue/Desktop/student.txt"))) {
  //创建学生对象
  Student student1= new Student(25, "Bob");
  Student student2= new Student(06, "Tom");
  Student student3= new Student(17, "Steven");
  //添加对象到集合
  s.add(student1);
  s.add(student2);
  s.add(student3);
  //把集合转成数组
  Object[] objs = s.toArray();
  // 把对象写入到文件中
  for(int x=0;x<objs.length;x++) {
  Student s1 =(Student)objs[x];
  obs.writeObject(s1);
  }
  obs.flush();
  System.out.println("序列化完毕!");
  } catch (Exception ex) {
      ex.printStackTrace();
  }
// 创建一个ObjectInputStream对象输入流
try (ObjectInputStream ois = new ObjectInputStream(new 
FileInputStream("/Users/zhuxiaoyue/Desktop/student.txt"))) {
  System.out.println("序列化完毕!读出的对象信息如下:");
// 从ObjectInputStream对象输入流中读取对象,并强制转换成Student对象
for(int i=0;i<s.size();i++) 
{
  Student s2 =(Student)ois.readObject();
  System.out.println(s2);
}
} catch (Exception ex) {
  ex.printStackTrace();
}
}
}

Student.java

import java.io.Serializable;
public class Student implements Serializable{
  private int number;
  private String name;
  public Student(int number, String name) {
  super();
  this.number = number;
  this.name = name;
}
public int getNumber() {
  return number;
}
public void setNumber(int number) {
  this.number = number;
}
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
@Override
public String toString() {
  return "Student [number=" + number + ", name=" + name + "]";
}
}

相关文章

  • 实验2---文件与IO流

    一、实验目的 本实验的目的是掌握File类的使用,完成对象序列化与反序列化。 二、实验内容 给定一个Student...

  • IO与流 -- 文件

    文件对象 可以将存在或不存在的文件或目录封装为对象 当创建一个文件对象后,就可以利用它来对文件或目录的属性进行操作...

  • IO流

    IO流 使用IO流技术读取文件的内容数据。 IO流解决问题: 解决设备与设备之间的数据传输问题。 内存--->硬...

  • java基础-day20-IO流和StringBuffer

    IO流和StringBuffer 1. IO流 1.1 IO流概述 1.2 IO流分类 1.3 文件操作输入输出字...

  • java io流与文件

    一、流 读写字节InputStream.read和OutpueStream.write组合流过滤器 某些流(如Fi...

  • 文件IO流

    从控制台读取输出字符从文件中写入读取字符从文件中写入读取字节文件夹操作 1. 从控制台读取输出字符 输入由Syst...

  • 文件与流-1

    文件与流 持久化操作:(文件里、数据库里)Java.io 文件分隔符 目录操作 文件操作

  • Java 流(Stream)、文件(File)和IO

    Java 流(Stream)、文件(File)和IO 简介 1.什么是流,什么是文件,什么是IO? 一个流可以理解...

  • java_io

    java.io.File类的使用IO原理及流的分类  |---文件流   操作对象是文件     FileInp...

  • IO流基础与字节流,字符流

    IO流基础 一、概念数据的交换程序与文件,数组,网络资源,数据库资源的数据传输与交换。 二、IO流的分类 流向:输...

网友评论

      本文标题:实验2---文件与IO流

      本文链接:https://www.haomeiwen.com/subject/iptvqhtx.html