模拟文件管理器Java程序
简介
文件管理器是计算机系统中常见的应用程序之一,用于管理计算机中的文件和目录。它提供了对文件和目录的创建、复制、粘贴、重命名、删除等功能,帮助用户更方便地管理和操作文件系统。
本文将使用Java编写一个简单的模拟文件管理器程序,演示文件和目录的基本操作,帮助读者理解文件管理器的工作原理和实现方式。
程序设计
类设计
在Java中,我们可以使用File类来表示文件和目录。File类提供了一系列方法来操作文件和目录,比如创建、删除、重命名等。
在本程序中,我们将设计以下几个类:
- FileManager:文件管理器类,负责用户交互和调用其他类的方法。
- FileSystem:文件系统类,负责模拟文件系统的操作,比如创建文件、创建目录、复制文件等。
- File:文件类,表示一个文件对象,包含文件名、文件大小等属性。
- Directory:目录类,表示一个目录对象,包含目录名和包含的文件列表。
类关系图
以下是程序中各个类之间的关系图:
erDiagram
FileManager ||.. FileSystem : 使用
FileSystem ||-- File : 包含
FileSystem ||-- Directory : 包含
Directory ||-- File : 包含
程序示例
下面是程序的代码示例:
// FileManager.java
import java.util.Scanner;
public class FileManager {
private FileSystem fileSystem;
public FileManager() {
fileSystem = new FileSystem();
}
public void start() {
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println("1. 创建文件");
System.out.println("2. 创建目录");
System.out.println("3. 复制文件");
System.out.println("4. 删除文件");
System.out.println("5. 重命名文件");
System.out.println("0. 退出");
System.out.print("请输入选项:");
choice = scanner.nextInt();
switch (choice) {
case 1:
createFile();
break;
case 2:
createDirectory();
break;
case 3:
copyFile();
break;
case 4:
deleteFile();
break;
case 5:
renameFile();
break;
case 0:
System.out.println("谢谢使用!");
break;
default:
System.out.println("无效选项,请重新输入!");
}
} while (choice != 0);
}
private void createFile() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入文件名:");
String fileName = scanner.nextLine();
System.out.print("请输入文件大小(单位:KB):");
int fileSize = scanner.nextInt();
File file = new File(fileName, fileSize);
fileSystem.createFile(file);
System.out.println("文件创建成功!");
}
private void createDirectory() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入目录名:");
String directoryName = scanner.nextLine();
Directory directory = new Directory(directoryName);
fileSystem.createDirectory(directory);
System.out.println("目录创建成功!");
}
private void copyFile() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入源文件名:");
String sourceFileName = scanner.nextLine();
System.out.print("请输入目标文件名:");
String targetFileName = scanner.nextLine();
fileSystem.copyFile(sourceFileName, targetFileName);
System.out.println("文件复制成功!");
}
private void deleteFile() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入文件名:");
String fileName = scanner.nextLine();
fileSystem.deleteFile(fileName);
System.out.println("文件删除成功!");
}
private void renameFile() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入原文件名:");
String sourceFileName = scanner.nextLine();
System.out.print("请输入新文件名:");
String targetFileName = scanner.nextLine();
fileSystem.renameFile(sourceFileName, targetFileName);
System.out.println("文件重命名成功!");
}
public static void main(String[] args) {
FileManager fileManager = new FileManager();
fileManager.start();
}
}
// FileSystem.java
import java.util.ArrayList;
import java.util.List;
public class FileSystem {
private List<File> files;
private List<Directory> directories;
public FileSystem() {
files = new ArrayList<>();
directories = new ArrayList<>();
}
public void createFile(File file) {
files.add(file);
}
public void