用Java写一个目录管理功能,可以往目录里添加文件,记录文件位置,然后将文件上传到对应的文件夹里,如果没有这个目录,我要添加这个目录,传进去一个数组,数组是每一级的结构,传进去一个文档(文件)列表,是它条目的内容,这一级目录是所有人不能修改的,系统自动创建的是不能自动修改的
时间: 2024-03-20 08:41:34 浏览: 45
java实现本地按照FTP服务器上目录结构创建文件夹下载文件
5星 · 资源好评率100%
下面是一个简单的Java代码,实现了目录管理功能,可以添加文件和目录,并将文件上传到对应的目录中。其中,目录结构使用`Map`表示,每个目录有一个固定的权限,不能被修改。
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DirectoryManager {
// 定义目录结构和权限
private Map<String, Map<String, Object>> rootDir = new HashMap<>();
public DirectoryManager() {
Map<String, Object> publicDir = new HashMap<>();
publicDir.put("permission", "rw");
publicDir.put("content", new HashMap<String, Object>());
rootDir.put("public", publicDir);
Map<String, Object> privateDir = new HashMap<>();
privateDir.put("permission", "rw");
privateDir.put("content", new HashMap<String, Object>());
rootDir.put("private", privateDir);
}
// 添加目录
public void addDir(String path) {
String[] parts = path.split("/");
Map<String, Map<String, Object>> currentDir = rootDir;
for (String part : parts) {
if (!currentDir.containsKey(part)) {
Map<String, Object> newDir = new HashMap<>();
newDir.put("permission", "rw");
newDir.put("content", new HashMap<String, Object>());
currentDir.put(part, newDir);
}
currentDir = (Map<String, Map<String, Object>>) currentDir.get(part).get("content");
}
}
// 添加文件
public void addFile(String path, Object content) {
String[] parts = path.split("/");
String filename = parts[parts.length - 1];
String dirPath = String.join("/", parts).substring(0, path.lastIndexOf("/"));
Map<String, Map<String, Object>> currentDir = rootDir;
for (int i = 0; i < parts.length - 1; i++) {
String part = parts[i];
if (!currentDir.containsKey(part)) {
addDir(dirPath);
currentDir = (Map<String, Map<String, Object>>) currentDir.get(part).get("content");
} else {
currentDir = (Map<String, Map<String, Object>>) currentDir.get(part).get("content");
}
}
currentDir.put(filename, content);
}
// 上传文件
public void uploadFile(String path, String filePath) {
String[] parts = path.split("/");
Map<String, Map<String, Object>> currentDir = rootDir;
for (int i = 0; i < parts.length; i++) {
String part = parts[i];
if (!currentDir.containsKey(part)) {
addDir(String.join("/", parts).substring(0, path.lastIndexOf(part) + part.length()));
currentDir = (Map<String, Map<String, Object>>) currentDir.get(part).get("content");
} else {
currentDir = (Map<String, Map<String, Object>>) currentDir.get(part).get("content");
}
}
if (!currentDir.containsKey("files")) {
currentDir.put("files", new ArrayList<String>());
}
((List<String>) currentDir.get("files")).add(filePath);
}
// 测试代码
public static void main(String[] args) {
DirectoryManager dirManager = new DirectoryManager();
dirManager.addFile("public/upload/test.txt", "This is a test file");
System.out.println(dirManager.rootDir);
dirManager.uploadFile("public/upload", "test.txt");
System.out.println(dirManager.rootDir);
}
}
```
使用时,可以通过`addFile`函数添加文件,通过`uploadFile`函数上传文件到对应目录中。如果目录不存在,会自动创建。
当然,这只是一个简单的实现,实际上还需要考虑一些其他的因素,例如目录和文件的权限管理、文件的重命名等等。
阅读全文