java写一个取文件夹hdgk目录下的日期文件目录20231122的photo,video,pdf文件夹的所有文件路径以20231122分组创建类对象
时间: 2024-03-10 15:48:28 浏览: 100
一个写文件的java类
好的,可以使用Java的File类来实现这个操作。以下是一个可能的实现:
```java
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class FileGroup {
private Map<String, FileGroupItem> items = new HashMap<>();
public void groupFiles(String basePath) {
File root = new File(basePath);
File dateDir = new File(root, "20231122");
File[] subDirs = dateDir.listFiles(File::isDirectory);
if (subDirs != null) {
for (File subDir : subDirs) {
String dirName = subDir.getName();
FileGroupItem item = new FileGroupItem(dirName);
items.put(dirName, item);
File[] files = subDir.listFiles();
if (files != null) {
for (File file : files) {
String fileName = file.getName();
if (fileName.endsWith(".pdf")) {
item.addPdfPath(file.getAbsolutePath());
} else if (fileName.endsWith(".jpg") || fileName.endsWith(".png")) {
item.addPhotoPath(file.getAbsolutePath());
} else if (fileName.endsWith(".mp4") || fileName.endsWith(".avi")) {
item.addVideoPath(file.getAbsolutePath());
}
}
}
}
}
}
public static void main(String[] args) {
FileGroup group = new FileGroup();
group.groupFiles("hdgk");
System.out.println(group);
}
@Override
public String toString() {
return "FileGroup{" +
"items=" + items +
'}';
}
}
class FileGroupItem {
private String name;
private String[] photoPaths = new String[0];
private String[] videoPaths = new String[0];
private String[] pdfPaths = new String[0];
public FileGroupItem(String name) {
this.name = name;
}
public void addPhotoPath(String path) {
photoPaths = addToArray(photoPaths, path);
}
public void addVideoPath(String path) {
videoPaths = addToArray(videoPaths, path);
}
public void addPdfPath(String path) {
pdfPaths = addToArray(pdfPaths, path);
}
private String[] addToArray(String[] array, String item) {
String[] newArray = new String[array.length + 1];
System.arraycopy(array, 0, newArray, 0, array.length);
newArray[array.length] = item;
return newArray;
}
@Override
public String toString() {
return "FileGroupItem{" +
"name='" + name + '\'' +
", photoPaths=" + Arrays.toString(photoPaths) +
", videoPaths=" + Arrays.toString(videoPaths) +
", pdfPaths=" + Arrays.toString(pdfPaths) +
'}';
}
}
```
这个程序会读取名为 `hdgk` 的文件夹下的 `20231122` 子文件夹,并在其中查找名为 `photo`、`video` 和 `pdf` 的子文件夹。然后,它将这些文件夹中的所有文件路径分别存储到一个 `FileGroupItem` 对象中,并将这些对象存储到一个 `FileGroup` 对象中,以便按照日期分组。可以在 `main` 方法中调用 `groupFiles` 方法,并查看 `FileGroup` 对象的输出来查看结果。
阅读全文