import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class DirectoryAnomalyFinder {
public static void main(String[] args) {
List<File> directories = getDirectories(); // Get list of directories to analyze
detectAnomalies(directories); // Detect and print anomalies
}
// Placeholder for getting the directories. Replace with your actual directory retrieval logic.
private static List<File> getDirectories() {
List<File> directories = new ArrayList<>();
File rootDir = new File("."); // Current directory
if (rootDir.isDirectory()) {
for (String s : rootDir.list()) {
File file = new File(rootDir, s);
if (file.isDirectory()) {
directories.add(file);
}
}
}
return directories;
}
public static void detectAnomalies(List<File> directories) {
if (directories == null || directories.isEmpty()) {
System.out.println("No directories to analyze.");
return;
}
// Example anomaly detection: Directory size (number of files/subdirectories).
for (File directory : directories) {
long size = directory.getFilesTotalSize() + directory.getDirectoriesTotalSize(); // Calculate total size
int itemCount = countItems(directory); // Count files and subdirectories
if (size > 1024 * 1024 * 10 || itemCount > 100) { // Flag large directories
System.out.println("Anomaly: Directory " + directory.getAbsolutePath() + " (Size: " + size + " bytes, Items: " + itemCount + ")");
}
}
}
private static int countItems(File directory) {
int count = 0;
if (directory.isDirectory()) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
count++;
} else if (file.isDirectory()) {
count++;
count += countItems(file); // Recursive call for subdirectories
}
}
}
}
return count;
}
}
Add your comment