important :remove high message holding files in c drive of my system > 100 mb size
- Get link
- X
- Other Apps
it worked.
------------------------------
Robust Solution Using FileVisitor
javaimport java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class LargeFileFinder {
private static final long SIZE_THRESHOLD_BYTES = 100L * 1024 * 1024; // 100MB
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final List<String> EXCLUDED_PATHS = Arrays.asList(
"C:\\Windows",
"C:\\Program Files",
"C:\\Program Files (x86)",
"C:\\ProgramData",
"C:\\$Recycle.Bin",
"C:\\System Volume Information"
);
private static final List<FileDetails> largeFiles = new ArrayList<>();
public static void main(String[] args) throws IOException {
Path rootPath = Paths.get("C:\\");
Files.walkFileTree(rootPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
String dirStr = dir.toAbsolutePath().toString();
for (String exclude : EXCLUDED_PATHS) {
if (dirStr.startsWith(exclude)) {
return FileVisitResult.SKIP_SUBTREE;
}
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
try {
long size = attrs.size();
if (size > SIZE_THRESHOLD_BYTES) {
FileTime lastModified = attrs.lastModifiedTime();
FileTime lastAccess = attrs.lastAccessTime();
largeFiles.add(new FileDetails(file, size, lastModified, lastAccess));
}
} catch (Exception e) {
// Skip unreadable files
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) {
// Skip files/directories that can't be accessed
return FileVisitResult.CONTINUE;
}
});
// Sort by last modified descending
largeFiles.sort(Comparator.comparing(FileDetails::getLastModified).reversed());
for (FileDetails file : largeFiles) {
System.out.printf("File: %s\nSize: %.2f MB\nLast Modified: %s\nLast Accessed: %s\n\n",
file.path,
file.size / (1024.0 * 1024),
DATE_FORMAT.format(new Date(file.lastModified.toMillis())),
DATE_FORMAT.format(new Date(file.lastAccessed.toMillis())));
}
System.out.println("Total files over 100MB found: " + largeFiles.size());
}
static class FileDetails {
Path path;
long size;
FileTime lastModified;
FileTime lastAccessed;
public FileDetails(Path path, long size, FileTime lastModified, FileTime lastAccessed) {
this.path = path;
this.size = size;
this.lastModified = lastModified;
this.lastAccessed = lastAccessed;
}
public FileTime getLastModified() {
return lastModified;
}
}
}
---------
- Get link
- X
- Other Apps