important :find duplicate files whose size > 50mb worked with java progarma

 


//it worked.

import java.io.IOException;

import java.nio.file.*;

import java.nio.file.attribute.*;

import java.text.DecimalFormat;

import java.util.*;


public class DuplicateFinder {


    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 long MIN_FILE_SIZE = 50 * 1024 * 1024; // 50MB in bytes


    public static void main(String[] args) throws IOException {

        Path rootPath = Paths.get("C:\\");


        Map<String, List<Path>> duplicateFiles = new HashMap<>();


        Files.walkFileTree(rootPath, new SimpleFileVisitor<Path>() {

            @Override

            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {

                for (String excluded : EXCLUDED_PATHS) {

                    if (dir.toString().startsWith(excluded)) {

                        return FileVisitResult.SKIP_SUBTREE;

                    }

                }

                return FileVisitResult.CONTINUE;

            }


            @Override

            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {

                try {

                    long size = attrs.size();

                    // Checking for files > 50MB

                    if (size > MIN_FILE_SIZE) {

                        Path fileName = file.getFileName();

                        if (fileName == null) {

                            return FileVisitResult.CONTINUE; // Skip if no file name

                        }

                        String fileKey = fileName.toString() + "::" + size;

                        duplicateFiles.computeIfAbsent(fileKey, k -> new ArrayList<>()).add(file);

                    }

                } catch (Exception e) {

                    System.err.println("Error processing file " + file + ": " + e.getMessage());

                }

                return FileVisitResult.CONTINUE;

            }


            @Override

            public FileVisitResult visitFileFailed(Path file, IOException exc) {

                System.err.println("Failed to access file " + file + ": " + exc.getMessage());

                return FileVisitResult.CONTINUE;

            }

        });


        DecimalFormat df = new DecimalFormat("#.##");


        System.out.println("\n--- Duplicate Files (Same Name & Size, > 50MB) ---");

        duplicateFiles.values().stream()

            .filter(list -> list.size() > 1)

            .forEach(list -> {

                Path sample = list.get(0);

                long size;

                try {

                    size = Files.size(sample);

                } catch (IOException e) {

                    System.err.println("Error reading size of " + sample + ": " + e.getMessage());

                    return;

                }

                System.out.println("File: " + sample.getFileName() + " (" + df.format(size / (1024.0 * 1024)) + " MB)");

                list.forEach(p -> System.out.println("  " + p));

                System.out.println();

            });

    }

}

Popular posts from this blog

SAP CPI : camle expression in sap cpi , cm, router, filter and groovy script. format

pss book: గురు ప్రార్థనామంజరి . completed 21st july 2024

pss book : శ్రీకృష్ణుడు దేవుడా, భగవంతుడా completed , second review needed. 26th April 2024