20、java把实体对象写入文件

本文介绍了如何将Java实体对象序列化为文件,包括定义实体类、设置属性和使用ObjectOutputStream进行序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[size=large][b]这是要写入的实体对象[/b][/size]

package com.tij.io.file;

import java.io.Serializable;

/**
* 一个实体对象并且序列化
* @author GYJ
* @date 2014-3-22
*/
public class EmployeeObject implements Serializable{
private static final long serialVersionUID = -5538384024205531388L;

private String name;
private String role;
private int age;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the role
*/
public String getRole() {
return role;
}
/**
* @param role the role to set
*/
public void setRole(String role) {
this.role = role;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}

/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "EmployeeObject [name=" + name + ", role=" + role + ", age="
+ age + "]";
}
}



[color=red][size=large][b]开始写入[/b][/size][/color]

package com.tij.io.file;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
* 把对象转换成文件并保存
* @author GYJ
* @date 2014-3-22
*/
public class ObjectToFile {

/**
* 我们可以把一个对象通过流的方式转换成一个文件,我们把这叫做序列化
* <p> 我们可以使用java.io.ObjectOutputStream或者其他的额output对象
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//要序列化的实体对象
EmployeeObject emp = new EmployeeObject();
emp.setAge(12);
emp.setName("gyj");
emp.setRole("leader");
//声明序列化后的名称, 文件保存在项目的根目录下(和src目录平级)
FileOutputStream fos = new FileOutputStream("employee.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
//开始写入
oos.writeObject(emp);
System.out.println("we are done");
//关闭流
oos.close();
fos.close();

//result out put==============
/*we are done*/
}

}

### 使用Java反射机制写入文件的方法 Java反射机制允许在运行时动态地操作类的字段、方法和构造函数等。通过反射,可以实现对对象属性的读取与修改,并结合实际需求完成文件写入操作。以下是一个完整的示例,展示如何使用Java反射机制将对象的属性值写入文件中。 #### 示例代码 假设有一个实体类 `Person`,我们希望通过反射将其属性值写入文件中。 ```java import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // Getter and Setter methods (Optional) } public class ReflectionToFileExample { public static void writeObjectFieldsToFile(Object obj, String filePath) throws IOException { Class<?> clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); // 获取所有字段(包括私有字段) try (FileWriter writer = new FileWriter(filePath)) { for (Field field : fields) { field.setAccessible(true); // 设置访问权限 String fieldName = field.getName(); Object fieldValue = field.get(obj); // 获取字段值 writer.write(fieldName + ": " + fieldValue + System.lineSeparator()); } } catch (IllegalAccessException e) { throw new RuntimeException("Error accessing field values", e); } } public static void main(String[] args) { Person person = new Person("Alice", 30); String filePath = "person_data.txt"; try { writeObjectFieldsToFile(person, filePath); System.out.println("Data written to file successfully."); } catch (IOException e) { System.err.println("Error writing to file: " + e.getMessage()); } } } ``` #### 代码说明 1. **获取字段**:通过 `clazz.getDeclaredFields()` 方法获取类的所有字段,包括私有字段[^4]。 2. **设置访问权限**:对于私有字段,需要调用 `field.setAccessible(true)` 来取消访问限制[^4]。 3. **读取字段值**:使用 `field.get(obj)` 方法获取字段值。 4. **写入文件**:通过 `FileWriter` 将字段名和字段值写入到指定的文件中。 #### 注意事项 - 如果字段是私有的,必须调用 `setAccessible(true)`,否则会抛出 `IllegalAccessException`[^4]。 - 确保正确关闭文件流,避免资源泄漏。这里使用了 `try-with-resources` 语法自动管理资源[^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值