java写一个取文件夹hdgk目录下的photo,video,pdf文件夹的所有文件路径以hdgk分组创建类对象
时间: 2024-03-10 19:47:12 浏览: 22
好的,这是一个比较具体的问题,我可以为您提供一个示例代码:
```java
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class FileGroupByType {
private static final String ROOT_PATH = "hdgk"; // 根目录路径
private static final String[] FILE_TYPES = {"photo", "video", "pdf"}; // 文件类型列表
public static void main(String[] args) {
// 扫描目录并建立文件类型分组
Map<String, FileGroup> fileGroups = new HashMap<>();
File rootDir = new File(ROOT_PATH);
if (rootDir.exists() && rootDir.isDirectory()) {
for (String fileType : FILE_TYPES) {
File typeDir = new File(rootDir, fileType);
if (typeDir.exists() && typeDir.isDirectory()) {
File[] files = typeDir.listFiles();
if (files != null && files.length > 0) {
FileGroup fileGroup = new FileGroup(fileType);
for (File file : files) {
fileGroup.addFile(file.getAbsolutePath());
}
fileGroups.put(fileType, fileGroup);
}
}
}
}
// 输出结果
for (String fileType : FILE_TYPES) {
FileGroup fileGroup = fileGroups.get(fileType);
if (fileGroup != null) {
System.out.println(fileGroup.toString());
}
}
}
// 文件类型分组类
static class FileGroup {
String fileType;
String[] filePaths;
public FileGroup(String fileType) {
this.fileType = fileType;
this.filePaths = new String[0];
}
public void addFile(String filePath) {
String[] newFilePaths = new String[filePaths.length + 1];
System.arraycopy(filePaths, 0, newFilePaths, 0, filePaths.length);
newFilePaths[filePaths.length] = filePath;
filePaths = newFilePaths;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("file type: ").append(fileType).append("\n");
for (String filePath : filePaths) {
sb.append(filePath).append("\n");
}
return sb.toString();
}
}
}
```
这个程序会遍历指定目录 `hdgk` 中的三个子目录 `photo`、`video` 和 `pdf`,并将每个子目录中的文件按照文件类型分组存储到一个 `FileGroup` 对象中。最后,程序会输出每个文件类型分组的详细信息。
注意,这个程序只是一个示例,您需要根据实际需求进行修改和优化。同时,在实际开发中,需要考虑异常处理和资源释放等问题,这里为了简化示例代码而省略了这些部分。