这里的save方法调用之后因为没有true所以会覆盖之前的内容这些都没有问题但是writer的writer方法写不进去东西。
应该是一些方法的使用不对有关,如FileWriter的参数没有设置为File对象和write后没有调用刷新方法flush(), 和getFileds()获取对象的所有属性,就必须先给对象设置属性。
参考链接:
Java字符流Writer写入文件Reader读取文件_java-zh的博客-CSDN博客_reader读取文件
Java Writer flush()方法 - Java IO流教程 - 一点教程
Java-使用反射获取对象信息_发灰梦的博客-CSDN博客_通过反射获取对象
代码修改如下:
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.lang.reflect.Field;
public class baocunde {
public int a;
public int b;
public baocunde(int a,int b) {
this.a=a;
this.b=b;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
save(new baocunde(3,5));
}
public static void save(Object obj) {
try {
// FileWriter对象要使用File对象作为参数
//参考链接:https://blog.csdn.net/qq_36138652/article/details/121098627
File file = new File("f:\\read.txt");
Writer writer = new FileWriter(file);
Class c = obj.getClass();
Field [] fields =c.getFields();
for(Field field:fields) {
field.setAccessible(true);
String name = field.getName();
field.setAccessible(true);
String value = field.get(obj)+"";
writer.write(name+"="+value);
//http://www.yiidian.com/java-io/writer-flush.html
//write后要调用flush方法把缓冲区数据写入文件
writer.flush();
System.out.println(name+"="+value);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}