Java 简单Project 1, 命令行程序

本文介绍如何使用Java编写一个命令行程序,该程序能读取目录下所有文件,用正则表达式搜索文本,并将符合条件的文件打包成ZIP。程序通过File类和Stream API实现,包括对文件路径的操作、正则表达式匹配及文件压缩。
摘要由CSDN通过智能技术生成

1. 命令行程序

利用main函数可以接受参数 String[] args 这一特点。

public static void main(String[] args)

2. 任务描述

写一个命令行程序,能够

1. 读取一个目录下的所有文件和子目录

2. 在每个文件中寻找一段文本,支持正则查找

3. 把所有符合条件的文件添加到一个ZIP压缩包。

3. 逐步分析

3.1 

首先,我们建立一个FileSearchApp 的java class, 根据任务描述,直觉上应该有储存文件地址的String path, 储存正则表达式的String regex,储存压缩文件名的String zipFileName, 储存符合条件的文件的路径列表 List<File> zippFiles. 注【1】

public class FileSearchApp {
    private String path;
    private String regex;
    private String zipFileName;
    private List<File> zipFiles = new ArrayList<>();

    public static void main(String[] args) {
        
    }

然后说明用法 "USAGE: FileSearch App path [regex] [zipfile]",接受三个参数,分别为path, 正则表达式,和压缩文件名

public static void main(String[] args) {
        FileSearchApp app = new FileSearchApp();

        switch(Math.min(args.length,3)){
            case 0:
                System.out.println("USAGE: FileSearch App path [regex] [zipfile]");
                return;
            case 3:
                app.setZipFileName(args[2]);
            case 2:
                app.setRegex(args[1]);
            case 1:
                app.setPath(args[0]);
        }
        try {
            app.walkDirectory(app.getPath());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这里walkDirectory的定义如下:注【2】

    public void walkDirectory(String path) throws IOException {
        Files.walk(Paths.get(path)).forEach(f-> processFile(f.toFile()));

    }

对一个String path, 使用Paths.get() 转化为Path 对象,然后通过Files.walk() 以Path为文件树的根节点,产生一个Stream,注【3】 对每一个Path f转化为File后, 进行processFile 的操作。


注释

注【1】

Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

File对象代表磁盘中实际存在的文件和目录。通过以下构造方法创建一个File对象。

通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。

File(File parent, String child);

通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。

File(String pathname) 

根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(String parent, String child) 

通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

File(URI uri) 

本次用到的方法:

1 public String getName()
返回由此抽象路径名表示的文件或目录的名称。
4 public String getPath()
将此抽象路径名转换为一个路径名字符串。
6 public Strin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值