低级JAVA工程师 2022-06-20 20:37 采纳率: 66.7%
浏览 21
已结题

Writer执行但没有结果问题怎么解决

这里的save方法调用之后因为没有true所以会覆盖之前的内容这些都没有问题但是writer的writer方法写不进去东西。

img

  • 写回答

1条回答 默认 最新

  • a5156520 2022-06-20 21:09
    关注

    应该是一些方法的使用不对有关,如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();
            }
            
        }
    
    }
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 创建了问题 6月20日