新建文件工具

该代码段展示了如何将一个对象的属性转换为文本内容并写入TXT文件。它首先检查文件目录,创建如果不存在,然后遍历对象的所有字段(包括父类字段),并将它们写入文件。如果文件已存在,它会添加编号以避免覆盖。
摘要由CSDN通过智能技术生成
/**
     * entity转txt文件
     */
    // 将实体对象转换为文本内容并写入文件
    static void EntityToTxt(Object entity, String filePathname) {
        File directory = new File(filePathname);
        boolean exists = directory.exists();

        // 创建文件目录
        if (exists) {
            System.out.println("目录已存在: " + filePathname);
        } else {
            boolean created = directory.mkdir();
            if (created) {
                System.out.println("目录创建成功: " + filePathname);
            } else {
                System.out.println("目录创建失败: " + filePathname);
            }
        }

        File txtFile = new File(filePathname, "账号余额.txt");
        int count = 1;

        // 文件名逻辑判断
        while (txtFile.exists()) {
            String newTxtFilePath = filePathname + "/账号余额(" + count + ").txt";
            txtFile = new File(newTxtFilePath);
            count++;
        }

        try {
            FileWriter writer = new FileWriter(txtFile);
            StringBuilder textContent = new StringBuilder();
            Class<?> entityClass = entity.getClass();
            List<Field> fields = getAllFields(entityClass);
            textContent.append("账户余额!").append("总共").append(fields.size()).append("\n");

            for (Field field : fields) {
//setAccessible(true):调用 setAccessible(true) 方法将字段的可访问性设置为 true,即允许对字段进行访问和操作。
                field.setAccessible(true);
                String fieldName = field.getName();
                Object fieldValue;

                try {
                    fieldValue = field.get(entity);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                    continue;
                }

                if (fieldValue != null) {
                    textContent.append(fieldName).append(": ").append(fieldValue.toString()).append("\n");
                }
            }

            writer.write(textContent.toString());
            writer.close();
            System.out.println("文件写入成功: " + txtFile.getAbsolutePath());
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件写入失败: " + txtFile.getAbsolutePath());
        }
    }

    // 获取实体对象的所有字段,包括父类字段
    private static List<Field> getAllFields(Class<?> clazz) {
        List<Field> fields = new ArrayList<>();

        while (clazz != null) {
            Field[] declaredFields = clazz.getDeclaredFields();
            for (Field field : declaredFields) {
                fields.add(field);
            }
            clazz = clazz.getSuperclass();
        }

        return fields;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值