Java合并某个目录下的所有文件内容到一个新文件

avatar 2024年04月10日10:26:58 0 109 views
博主分享免费Java教学视频,B站账号:Java刘哥

故事背景

把2年前的代码生成工具搬出来,发现漏了生成每个实体权限菜单SQL的功能。

马上加上,效果如下

比如address.sql如下

INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES ( 0, '收货地址管理', '/admin/address', b'1', 10, 'fa fa-list');
SELECT @parentId := LAST_INSERT_ID();
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '编辑收货地址页面', '/admin/address/edit', b'0', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '收货地址列表', '/admin/address', b'1', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '添加收货地址', '/admin/address/new', b'1', 2, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '删除收货地址操作', '/admin/address/delete', b'0', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '保存收货地址操作', '/admin/address/save', b'0', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '批量删除收货地址操作', '/admin/address/batchDelete', b'0', 1, 'fa fa-circle-o');

痛点

需要把上面的sql文件合并成一个新的,这样就比较好复制了。

先写个 demo 测试下

    public static void main(String[] args) {
        String sourceDirectory = "/Users/liuyanzhao/Desktop/shop/054-SkyBlog/SpringBootCodeGenerator/target/classes/generate/sql"; // 源目录路径
        String targetFile = "/Users/liuyanzhao/Desktop/shop/054-SkyBlog/SpringBootCodeGenerator/target/classes/generate/sql/merge.sql"; // 目标文件路径

        File directory = new File(sourceDirectory);
        File[] files = directory.listFiles();

        try (BufferedWriter writer = new BufferedWriter(new FileWriter(targetFile))) {
            for (File file : files) {
                if (file.isFile()) {
                    try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
                        String line;
                        while ((line = reader.readLine()) != null) {
                            writer.write(line);
                            writer.newLine();
                        }
                        writer.newLine(); // 每个文件末尾加个换行符
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

不错,目的达成

后面只需要封装下参数,然后在生成代码里调用一下即可。

当然,我们也可以一开始让他生成到一个文件里去,个人觉得没有必要。多生成一些文件,给我们多一些选择

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292(群满)
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0