JAVA IO流 <二>过滤器

本文深入探讨了Java中的IO流过滤器,介绍如何通过实现过滤器接口来增强和定制数据流的功能,包括输入流和输出流的过滤处理。

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

实现过滤器接口:

public class filterByName implements FileFilter {

        public boolean accept(File pathname) {

                return pathname.getName().endsWith(".pdf");
        }

}

public class filterByContains implements FileFilter {

        public boolean accept(File pathname) {

                return pathname.getName().contains("课后");
        }

}

具体使用方法:



import blog_filterByName.filterByContains;
import blog_filterByName.filterByName;

public class File_ListDemo {

   
        public static void main(String[] args) {
                File dir = new File("d:\\文件\\");
                FileFilter f = new filterByName();              //过滤器 :按照后缀名过滤
                FileFilter f1 = new filterByContains();     //过滤器:按照含有的字段过滤
                File[] str = dir.listFiles(f);          
                for(File s : str)
                {
                        System.out.println(s +".........."+ s.length());
                }
                File[] str1 = dir.listFiles(f1);
                for(File s : str1)
                {
                        System.out.println(s +".........."+ s.length());
                }
                
        }

}


MyBatis Plus Generator 3.5.1 是一个用于自动生成 MyBatis 相关代码的工具,可以显著减少手动编写基础实体类、Mapper 接口和 XML 映射文件的工作量。以下是关于其依赖配置与使用方法的详细说明。 ### Maven 依赖配置 为了使用 `mybatis-plus-generator` 进行代码生成,需要在项目的 `pom.xml` 文件中添加以下依赖项: ```xml <!-- MyBatis Plus Generator --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version> </dependency> <!-- 模板引擎支持,这里以 Freemarker 为例 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.31</version> </dependency> ``` 上述配置引入了 `mybatis-plus-generator` 和 `freemarker` 模板引擎,后者是代码生成过程中用于生成模板文件的关键组件[^2]。 ### 使用 FastAutoGenerator 进行代码生成 从 3.5.1 版本开始,MyBatis Plus Generator 引入了全新的 `FastAutoGenerator` 类来简化代码生成程。以下是一个完整的代码示例,展示如何通过 `FastAutoGenerator` 自动生成代码: ```java import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import java.util.Collections; public class CodeGenerator { public static void main(String[] args) { FastAutoGenerator.create("jdbc:mysql://localhost:3306/your_database", "username", "password") .globalConfig(builder -> { builder.author("Your Name") // 设置作者 .outputDir(System.getProperty("user.dir") + "/src/main/java"); // 指定输出目录 }) .packageConfig(builder -> { builder.parent("com.example.demo") // 设置父包名 .moduleName("system") // 设置模块名 .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper")); // 配置 mapper.xml 路径 }) .strategyConfig(builder -> { builder.addInclude("your_table_name") // 设置需要生成的表名 .addTablePrefix("t_"); // 设置过滤表前缀 }) .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 引擎模板,默认的是 Velocity 引擎 .execute(); } } ``` ### 注意事项 - **数据库连接信息**:确保在 `FastAutoGenerator.create()` 方法中正确填写数据库 URL、用户名和密码。 - **输出路径**:根据项目结构合理设置 `outputDir` 和 `pathInfo`,避免生成的文件位置不正确。 - **模板引擎**:如果使用 `FreemarkerTemplateEngine`,则必须确保已正确引入 Freemarker 的依赖[^3]。 ### 示例模板引擎实现(Freemarker) 如果你希望自定义模板或修改默认模板行为,可以通过继承 `AbstractTemplateEngine` 并实现自己的模板引擎逻辑。以下是一个简单的 Freemarker 模板引擎实现: ```java import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine; import freemarker.template.Configuration; import freemarker.template.TemplateExceptionHandler; import java.io.File; import java.io.FileWriter; import java.io.Writer; import java.util.Map; public class FreemarkerTemplateEngine extends AbstractTemplateEngine { private Configuration configuration; public FreemarkerTemplateEngine() { try { configuration = new Configuration(Configuration.VERSION_2_3_31); configuration.setDirectoryForTemplateLoading(new File("templates")); // 设置模板路径 configuration.setDefaultEncoding("UTF-8"); configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); } catch (Exception e) { e.printStackTrace(); } } @Override public void writer(Map<String, Object> objectMap, String templatePath, File outputFile) { try (Writer out = new FileWriter(outputFile)) { configuration.getTemplate(templatePath).process(objectMap, out); } catch (Exception e) { throw new RuntimeException("代码生成失败", e); } } } ``` 该类实现了 `writer` 方法,并基于 Freemarker 提供了基本的模板渲染能力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值