基于命令行的文件管理系统
一、实验目的
本次实验的目的是掌握Java企业级应用开发工具的使用方法,掌握Java面向对象程序编程技术,掌握常用工具类的使用。理解面向对象的分析和设计方法,理解和使用设计模式。
设计开发完成一个基于命令行的文件资源管理软件。熟练掌握文件资源的处理方法和工具类。理解多线程工作机制。提高OOP能力。
抄袭计0分。
二、实验项目内容
设计开发完成“基于命令行的文件管理器”软件。要求如下:
1、可以设置当前工作文件夹,默认在当前文件夹下进行文件的增删改查操作,文件夹的增删改查操作。也可以操作指定的文件夹。
2、实现当前文件夹下的内容罗列;可以根据文件名、文件大小、文件类型、文件日期等过滤特定类型的文件。罗列的时候可以排序,依据名称、大小、时间等。罗列文件的时候,显示要规范。
3、可以直接查看和显示一个文本文件的内容。
4、实现文件拷贝和文件夹拷贝(文件夹拷贝指深度拷贝,包括所有子目录和文件);能指定目标名称和位置,能计算拷贝时间,能显示拷贝进度。
5、可以利用线程机制,支持后台长时任务异步执行。不影响前端操作。例如在拷贝大文件或者文件夹的时候,可以选择后台执行,还是前台执行。如果前台执行,显示时间和进度。
6、可以对指定文件进行加密和解密;加密后形成新的文件,可以指定文件名。加密与解密方式自己选择。
7、可以对文件或者文件夹进行压缩,或者解压。压缩与解压方式自己选择。
8、可以实现自定义功能。注意操作使用的方便性,注意类和类之间的关系。充分利用继承,多态等特性,使用上抽象类,接口,泛型,内部类等设计元素,使用好集合类、多线程、IO工具类、NIO工具类等。注意程序的总执行流程和分支执行流程。注意设计思想的表达,注意优化代码结构,优化类的职责分工,注意使用设计模式。代码有注释。
三、实验过程或算法
1、可以设置当前工作文件夹,默认在当前文件夹下进行文件的增删改查操作,文件夹的增删改查操作。也可以操作指定的文件夹。(√)
2、实现当前文件夹下的内容罗列(√);可以根据文件名、文件大小、文件类型、文件日期等过滤特定类型的文件。罗列的时候可以排序,依据名称、大小、时间等。(√)罗列文件的时候,显示要规范。
3、可以直接查看和显示一个文本文件的内容。(√)
4、实现文件拷贝和文件夹拷贝(文件夹拷贝指深度拷贝,包括所有子目录和文件)(√);能指定目标名称和位置,能计算拷贝时间,能显示拷贝进度。(√)
5、可以利用线程机制,支持后台长时任务异步执行。不影响前端操作。例如在拷贝大文件或者文件夹的时候,可以选择后台执行,还是前台执行。如果前台执行,显示时间和进度。(√)
6、可以对指定文件进行加密和解密;加密后形成新的文件,可以指定文件名。加密与解密方式自己选择。(√)
7、可以对文件或者文件夹进行压缩,或者解压。压缩与解压方式自己选择。(√)
8、可以实现自定义功能。注意操作使用的方便性,注意类和类之间的关系。充分利用继承,多态等特性,使用上抽象类,接口,泛型,内部类等设计元素,使用好集合类、多线程、IO工具类、NIO工具类等。注意程序的总执行流程和分支执行流程。注意设计思想的表达,注意优化代码结构,优化类的职责分工,注意使用设计模式。代码有注释。
知识记录
1. Path中不能有通配符,而File可以
在 Java 中,Path
和 File
对通配符的处理方式不同,主要是因为它们的设计目标和使用场景不同。
Java Path:
Path
类是 Java NIO (New I/O) 的一部分,旨在提供更强大和灵活的文件系统操作。Path
本身不支持通配符,因为它主要用于表示文件系统中的路径,而不是用于文件匹配。如果需要使用通配符,可以使用
FileSystem.getPathMatcher
方法来创建一个PathMatcher
,然后使用这个匹配器来匹配路径。例如:1
2
3
4
5PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.{java,class}");
Path path = Paths.get("example.java");
if (matcher.matches(path.getFileName())) {
System.out.println("Matched!");
}
Java File:
File
类是 Java 旧版 I/O 的一部分,提供了基本的文件和目录操作。File
类支持使用通配符进行文件过滤。例如,可以使用FilenameFilter
接口来实现文件名的过滤:1
2
3
4
5File dir = new File(".");
File[] files = dir.listFiles((d, name) -> name.endsWith(".java"));
for (File file : files) {
System.out.println(file.getName());
}
总结来说,Path
类的设计更注重路径的表示和操作,而不是文件名匹配,因此不直接支持通配符。而 File
类则提供了更直接的文件名匹配功能,适合简单的文件过滤操作.
要改:
dir 命令
rmdir 删除有文件的文件夹
move 不能移动到空的文件夹