如何将一个对象保存为文件,并从文件中读取Java对象呢?

1.首先先创建一个Student类

声明私有变量 id,name,age,并构造有参,无参,getter和setter方法以及同toStiring()方法

2.调用Student类创建一个st对象

 Student st = new Student(1,"张三",22);

3. 把对象保存为文件需要借用 ObjectOutputStream高级流

ObjectOutputStream 流用保存实现 implements Serializable接口

ObjectOutputStream是一个高级流, 将 Java 对象的基本数据类型和图形写入 OutputStream

所以在Student类后面需要添加implements Serializable接口实现序列化

为什么要实现序列化呢

我们在使用Dubbo远程调用服务框架时,需要把传输的Java对象实现Serializable接口,即让Java对象序列化,因为这样才能让对象在网络上传输。

同时方便在类中添加属性

idea中有高级工具会自动帮我们实现序列化,看下图

配置完成之后鼠标放在Student类上,然后实例化完成..

 

 

 

首先创建一个objiectIn.java进行把对象写进文件和读取文件中的对象

4.  try catch

try(){
                 
            }catch(Exception e){
                 e.printStackTrace();
            }

然后使用 ObjectOutputStream高级流,并把对象写入OutputStream

var stream =  new ObjectOutputStream(new FileOutputStream("st.dat"))

直接写入st就行,,然后它默认创建在项目中 ,最后对象就保存在文件中

stream.writeObject(st);

 

  

5,读取对象文件中的内容 

ObjectInputStream读取文件对象ObjectOutputStream写入文件对象

所以直接地区OutputStream里面文件的内容

  try (var stream = new ObjectInputStream( new FileInputStream("st.dat"))){
                  
                }catch(Exception e){
                     e.printStackTrace();
                }

 将读物的内容赋予Student类,因为对象类型为Student,所以阔以直接强转

输出读取结果

 System.out.println(sr);

输出读取的id

System.out.println(sr.getId());
           

输出读取的name

 System.out.println(sr.getName());
            

输出读取的age

 System.out.println(sr.getAge());

读出结果

 

整体代码

Student

/*
 * Copyright (c) 2020, 2023.
 *
 */

import lombok.*;

import java.io.Serial;
import java.io.Serializable;

/**
 * <p>Project: File - Object</p>
 * <p>Powered by Cyy On 2023-07-24 15:44:14</p>
 * <p>描述:<p>
 *
 * @author Cyy [210585265@qq.com]
 * @version 1.0
 * @since 17
 */

public class Student implements Serializable {
     @Serial
     private static final long serialVersionUID = -1860938135581020148L;
     private  int id;
     private  String name; 
     private  int age;

     public Student() {
     }

     public Student(int id, String name, int age) {
          this.id = id;
          this.name = name;
          this.age = age;
     }

     public int getId() {
          return id;
     }

     public void setId(int id) {
          this.id = id;
     }

     public String getName() {
          return name;
     }

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

     public int getAge() {
          return age;
     }

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

     @Override
     public String toString() {
          return "Student{" +
                  "id=" + id +
                  ", name='" + name + '\'' +
                  ", age=" + age +
                  '}';
     }
}

ObjectIn

/*
 * Copyright (c) 2020, 2023.
 *
 */

import java.io.*;

/**
 * <p>Project: File - Object</p>
 * <p>Powered by Cyy On 2023-07-24 15:44:14</p>
 * <p>描述:<p>
 *
 * @author Cyy [210585265@qq.com]
 * @version 1.0
 * @since 17
 */
public class ObjectIn {
    public static void main(String[] args) {
        Student st = new Student(1,"张三",22);
        System.out.println(st);

        //将对象保存到文件
        // ObjectOutputStream 流用保存实现 implements Serializable
        try(var stream =  new ObjectOutputStream(new FileOutputStream("st.dat"))){
            stream.writeObject(st);

                }catch(Exception e){
                     e.printStackTrace();
                }

          //从文件中读取java对象
        try (var stream = new ObjectInputStream( new FileInputStream("st.dat"))){
            Student sr= (Student) stream.readObject();
            System.out.println(sr);
            System.out.println(sr.getId());
            System.out.println(sr.getName());
            System.out.println(sr.getAge());

                }catch(Exception e){
                     e.printStackTrace();
                }

    }

}

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java文件读写功能来实现从一个txt文件读取数据并保存到另一个txt文本。下面是一个简单的示例代码: ```java import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileReadWrite { public static void main(String[] args) { try { // 读取文件 BufferedReader br = new BufferedReader(new FileReader("input.txt")); // 写入文件 BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt")); String line; // 逐行读取数据并写入到另一个文件 while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); } // 关闭读写流 br.close(); bw.close(); System.out.println("数据已经成功从input.txt文件读取保存到output.txt文件。"); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的代码,我们使用了Java的BufferedReader和BufferedWriter类来实现文件的读写操作。首先,我们创建了一个BufferedReader对象,用于读取input.txt文件的数据。然后,我们创建了一个BufferedWriter对象,用于将读取到的数据写入到output.txt文件。接着,我们使用while循环逐行读取input.txt文件的数据,并将其写入到output.txt文件。最后,我们关闭了读写流并输出了操作成功的提示信息。 当然,这只是一个简单的示例代码,你可以根据自己的实际需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值