ফোল্ডার বা ফাইলের আকার পান


105

আমি জাভাতে ফোল্ডার বা ফাইলের আকার পুনরুদ্ধার করতে পারি?


একই কিন্তু দক্ষতা উপর ফোকাস সঙ্গে stackoverflow.com/questions/116574/...
সিরো Santilli郝海东冠状病六四事件法轮功

আপনি যদি অ্যান্ড্রয়েডে হয়ে থাকেন তবে একবার দেখুন StatFs। এটি ফাইল সিস্টেমের পরিসংখ্যান ব্যবহার করে এবং পুনরাবৃত্ত পদ্ধতিগুলির চেয়ে প্রায় 1000x দ্রুত, যা আমাদের প্রয়োজনের জন্য অকার্যকর ছিল। আমাদের বাস্তবায়ন এখানে পাওয়া যাবে: stackoverflow.com/a/58418639/293280
জোশুয়া পিন্টার

উত্তর:


191
java.io.File file = new java.io.File("myfile.txt");
file.length();

এটি ফাইলের দৈর্ঘ্যকে বাইটে বা 0যদি ফাইলটির অস্তিত্ব না রাখে returns ফোল্ডারের আকার পাওয়ার জন্য কোনও অন্তর্নির্মিত উপায় নেই, আপনাকে ডিরেক্টরি ট্রিটিকে পুনরাবৃত্তভাবে হাঁটাতে হবে ( listFiles()কোনও ফাইলের ডিরেক্টরি যা ডিরেক্টরিকে উপস্থাপন করে তার পদ্ধতি ব্যবহার করে ) এবং নিজের জন্য ডিরেক্টরি আকারটি সংগ্রহ করতে হবে:

public static long folderSize(File directory) {
    long length = 0;
    for (File file : directory.listFiles()) {
        if (file.isFile())
            length += file.length();
        else
            length += folderSize(file);
    }
    return length;
}

সতর্কতা : উত্পাদন পদ্ধতির জন্য এই পদ্ধতিটি যথেষ্ট শক্তিশালী নয়। directory.listFiles()ফিরে আসতে পারে nullএবং ক NullPointerException। এছাড়াও, এটি প্রতিলিঙ্কগুলি বিবেচনা করে না এবং সম্ভবত অন্যান্য ব্যর্থতা মোড রয়েছে। এই পদ্ধতিটি ব্যবহার করুন ।


11
আপনি যদি এটি উইন্ডোজ মেশিনে সি: রুট ডিরেক্টরিতে চালনা করেন তবে সাবধান হন; সেখানে একটি সিস্টেম ফাইল রয়েছে যা (java.io.File অনুসারে) কোনও ফাইল বা ডিরেক্টরি নেই। ফাইলটি আসলে একটি ডিরেক্টরি কিনা তা পরীক্ষা করতে আপনি অন্য-ধারাটি পরিবর্তন করতে চাইতে পারেন।
পল ক্ল্যাপাম

2
পদ্ধতির শুরুতে এটি ডিরেক্টরি নয় কিনা তা দেখতে প্যারামিটারটি পরীক্ষা করে দেখতে সরল পরিবর্তন এবং পুনরাবৃত্তিটি ফিরে আসে তবে পুনরাবৃত্তি সহজ হয় - কেবল একই পদ্ধতিতে কলটিতে স্ব যুক্ত করুন এবং তারপরে এটি পরিবর্তে কোনও ফাইলের রেফারেন্সকে সমর্থন করে একটি ডিরেক্টরি হিসাবে।
কেভিন ব্রক

3
আপনি যদি জাভা 7 বা তার বেশি ব্যবহার করেন তবে উত্তরটি স্ট্যাকওভারফ্লো.com/ a/ 19877372/40064 ব্যবহার করুন এটি অনেক দ্রুত।
উইম দেবলাওয়ে

1
এটি symlinks দ্বারা বিভ্রান্ত হবে। এছাড়াও NullPointerExceptionডিরেক্টরিটি যদি একই সাথে সংশোধিত হয় তবে এটি নিক্ষেপ করতে পারে ।
আলেকসান্দ্র ডাবিনস্কি

43

জাভা -7 নিও এপিআই ব্যবহার করে ফোল্ডারের আকার গণনা করা আরও দ্রুত করা যায়।

দৃ run় এবং এটি ব্যতিক্রম ছুঁড়ে না চালানোর জন্য এখানে প্রস্তুত উদাহরণ। এটি ডিরেক্টরিগুলি লগ করবে যা এটি প্রবেশ করতে পারে না বা ট্র্যাশ করতে সমস্যা হয়েছিল। সিমলিংকগুলি উপেক্ষা করা হয় এবং ডিরেক্টরিটির একযোগে সংশোধন করা প্রয়োজনের তুলনায় আরও বেশি সমস্যার কারণ হবে না।

/**
 * Attempts to calculate the size of a file or directory.
 * 
 * <p>
 * Since the operation is non-atomic, the returned value may be inaccurate.
 * However, this method is quick and does its best.
 */
public static long size(Path path) {

    final AtomicLong size = new AtomicLong(0);

    try {
        Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {

                size.addAndGet(attrs.size());
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult visitFileFailed(Path file, IOException exc) {

                System.out.println("skipped: " + file + " (" + exc + ")");
                // Skip folders that can't be traversed
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult postVisitDirectory(Path dir, IOException exc) {

                if (exc != null)
                    System.out.println("had trouble traversing: " + dir + " (" + exc + ")");
                // Ignore errors traversing a folder
                return FileVisitResult.CONTINUE;
            }
        });
    } catch (IOException e) {
        throw new AssertionError("walkFileTree will not throw IOException if the FileVisitor does not");
    }

    return size.get();
}

অ্যান্ড্রয়েড বিকাশের জন্য এটির সমতুল্য কি আছে?
অ্যান্ড্রয়েড বিকাশকারী

ন্যায়বিচারের AtomicLongপরিবর্তে ব্যবহার করার কোনও কারণ আছে কি long?
লুকাশ শামেলজেইসেন

বেনামে ক্লাস থেকে অ্যাক্সেস করা হলে ভেরিয়েবলটি চূড়ান্ত হতে হবে
আক্সেল ওয়েলগার্ট

1
আমি জেএমএইচ ব্যবহার করে একটি বেঞ্চমার্ক করেছি এবং এই এনআইও এপি পদ্ধতিটি কমন্স-আইও কোডের তুলনায় প্রায় 4 থেকে 5 গুণ বেশি দ্রুত (মোট 180229 ফাইলের জন্য অনেক সাবফোল্ডারযুক্ত ফোল্ডারে পরীক্ষিত)। কমন্স আইও 15 সেকেন্ড নিয়েছিল, এনআইও 5 সেকেন্ড নিয়েছিল।
উইম দেবলাউয়ে

3
এই পদ্ধতির সবচেয়ে মজবুত। এটি সিমলিঙ্কগুলি, একযোগে পরিবর্তন, সুরক্ষা ব্যতিক্রমগুলি, ফাইল এবং ডিরেক্টরি উভয় ক্ষেত্রেই কাজ করে etc. ইত্যাদি খুব খারাপ Filesএটি সরাসরি সমর্থন করে না!
আলেকসান্দ্র ডাবিনস্কি

38

আপনার কমন্স-আইওFileUtils#sizeOfDirectory(File) থেকে দরকার ।

নোট করুন যে পদ্ধতিটি কোনও অ-ডিরেক্টরি পাস হলে পদ্ধতিটি একটি ব্যতিক্রম ছুঁড়ে ফেলা হিসাবে ফাইলটি একটি ডিরেক্টরি কিনা তা আপনাকে ম্যানুয়ালি পরীক্ষা করতে হবে।

সতর্কতা : এই পদ্ধতিতে (কমন্স-আইও ২.৪ হিসাবে) একটি বাগ রয়েছে এবং IllegalArgumentExceptionডিরেক্টরিটি যদি একই সাথে সংশোধন করা হয় তবে তা ফেলে দিতে পারে ।


ফাইল ফাইল ডিরেক্টরি না হলে কী হয়? যখন এর অস্তিত্ব নেই? ইত্যাদি - কী ভয়াবহ ডক্স
Mr_and_Mrs_D

@ মিআর_আর_আমস_ডি - চেকের পরে লাইনগুলি অনুলিপি করুন এবং আটকান checkDirectory(directory);File.listFilesএটি নিশ্চিত করুন যে এতে শিশু রয়েছে। রেফার্স: ফাইল ইউটিলস.সাইজঅফডাইরেক্টরি () , ফাইল.লিস্ট ফাইলস ()
মিঃ পলিহর্ল

3
বাগ IO-449 দেখুনIllegalArgumentExceptionডিরেক্টরিটি পুনরাবৃত্তি হওয়ার সময় যদি সংশোধন করা হয় তবে এই পদ্ধতিটি একটি নিক্ষেপ করবে ।
আলেকসান্দ্র ডাবিনস্কি

সেকি !!! এটি চুষে ... হ্যাঁ, এটি ফাইলগুলি তালিকাভুক্ত করে এবং তারপরে কোড চলাকালীন যদি কোনওটি মুছে ফেলা হয় তবে তা ছোঁড়ে।
ডিন হিলার

19

জাভা 8 তে:

long size = Files.walk(path).mapToLong( p -> p.toFile().length() ).sum();

Files::sizeমানচিত্রের ধাপে এটি ব্যবহার করা আরও ভাল লাগবে তবে এটি একটি চেক করা ব্যতিক্রম ছুঁড়ে দেয়।

আপডেট:
আপনার সচেতন হওয়া উচিত যে যদি কিছু ফাইল / ফোল্ডার অ্যাক্সেসযোগ্য না হয় তবে এটি একটি ব্যতিক্রম ছুঁড়ে ফেলতে পারে। এই প্রশ্নটি এবং পেয়ারা ব্যবহার করে অন্য একটি সমাধান দেখুন ।


1
আমি সাদৃশ্যযুক্ত কিছু সন্ধান করছিলাম এবং কোডে প্রশ্নটি শেষ করেছি: stackoverflow.com/questions/22867286/… , আপনি দেখেন যে ত্রুটি পরিচালনার আরও একটি দিক রয়েছে যা সমস্যা সৃষ্টি করে।
আকসেল ওয়েলগার্ট

@ আকসেল উইলগার্ট ধন্যবাদ, এটি দুর্ভাগ্যজনক এবং আমি উত্তর আপডেট করেছি। এখন পেয়ারা স্ট্যাকওভারফ্লো.com
a/

10
public static long getFolderSize(File dir) {
    long size = 0;
    for (File file : dir.listFiles()) {
        if (file.isFile()) {
            System.out.println(file.getName() + " " + file.length());
            size += file.length();
        }
        else
            size += getFolderSize(file);
    }
    return size;
}

1
@ ভিশাল আপনার কোডটির একটি সাধারণ ফিক্স থাকা দরকার, পুনরাবৃত্তির কলটিতে, আপনার কেবলমাত্র এটি বরাদ্দ না করে বিদ্যমান আকারে আকার যুক্ত করা উচিত। size += getFolderSize(file);
তেজা কান্তমনেেনি

@ টেজা: নির্দেশ করার জন্য ধন্যবাদ, তবে পরিবর্তনগুলি যদি ইফ-এর বিবৃতিতেও হয়
বিশাল

কখনও কখনও একটি ক্রমবর্ধমান ফোল্ডারে (অন্য থ্রেড ফাইল এবং ফোল্ডারগুলি ডাউনলোড করা হয় এবং একই সাথে আমি ফোল্ডার আকারটি অগ্রগতি হিসাবে মুদ্রণ করছি) এটি "ফাইলের জন্য: dir.listFiles ()) line" এর জন্য লাইনে নালপয়েন্টেরেক্সেপশন দেয় । "।"। "। কিছু ফাইল জীবন্ত ফোল্ডারে উপস্থিত হয়ে দ্রুত অদৃশ্য হয়ে যায়। সুতরাং আমি লুপের আগে dir.listFiles () ফেরতের মানের জন্য একটি নাল চেক যুক্ত করেছি ।
সিএসনিউরিলমাজ

File.listFiles থেকে () javadoc: "অ্যারে ফাঁকা থাকবে যদি ডিরেক্টরির খালি রিটার্নস। নাল যদি এই বিমূর্ত পথনাম একটি ডিরেক্টরি বোঝায় না, অথবা একটি I / O ত্রুটি দেখা দেয় যদি।" সুতরাং উপরের মন্তব্যটি কার্যকরভাবে ফোল্ডার পরিবর্তন করতে ফোল্ডারের আকার পেতে যখন দরকারী।
সিএসনিউরিলমজ 27'17

7

জাভা 8 এর জন্য এটি করার একটি সঠিক উপায়:

Files.walk(new File("D:/temp").toPath())
                .map(f -> f.toFile())
                .filter(f -> f.isFile())
                .mapToLong(f -> f.length()).sum()

সমস্ত ডিরেক্টরিগুলি ফিল্টার করা গুরুত্বপূর্ণ , কারণ দৈর্ঘ্যের পদ্ধতিটি ডিরেক্টরিগুলির জন্য 0 হওয়ার নিশ্চয়তা দেয় না।

কমপক্ষে এই কোডটি একই আকারের তথ্য সরবরাহ করে যেমন উইন্ডোজ এক্সপ্লোরার নিজেই করে।


4

একটি সাধারণ ফাইলের আকার (ডিরেক্টরি এবং নন-ডিরেক্টরিতে কাজ করে) পাওয়ার সর্বোত্তম উপায়:

public static long getSize(File file) {
    long size;
    if (file.isDirectory()) {
        size = 0;
        for (File child : file.listFiles()) {
            size += getSize(child);
        }
    } else {
        size = file.length();
    }
    return size;
}

সম্পাদনা: নোট করুন যে এটি সম্ভবত সময়সাপেক্ষ অপারেশন হতে চলেছে। এটি ইউআই থ্রেডে চালাবেন না।

এছাড়াও, এখানে ( https://stackoverflow.com/a/5599842/1696171 থেকে নেওয়া ) দীর্ঘ প্রত্যাবর্তিত থেকে ব্যবহারকারী-পঠনযোগ্য স্ট্রিংয়ের একটি দুর্দান্ত উপায়:

public static String getReadableSize(long size) {
    if(size <= 0) return "0";
    final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" };
    int digitGroups = (int) (Math.log10(size)/Math.log10(1024));
    return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups))
            + " " + units[digitGroups];
}

4

আপনি যদি জাভা 8 এনআইও এপিআই ব্যবহার করতে চান তবে নীচের প্রোগ্রামটি এটি যে ডিরেক্টরিতে অবস্থিত সেটির আকার, বাইটে মুদ্রণ করবে।

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class PathSize {

    public static void main(String[] args) {
        Path path = Paths.get(".");
        long size = calculateSize(path);
        System.out.println(size);
    }

    /**
     * Returns the size, in bytes, of the specified <tt>path</tt>. If the given
     * path is a regular file, trivially its size is returned. Else the path is
     * a directory and its contents are recursively explored, returning the
     * total sum of all files within the directory.
     * <p>
     * If an I/O exception occurs, it is suppressed within this method and
     * <tt>0</tt> is returned as the size of the specified <tt>path</tt>.
     * 
     * @param path path whose size is to be returned
     * @return size of the specified path
     */
    public static long calculateSize(Path path) {
        try {
            if (Files.isRegularFile(path)) {
                return Files.size(path);
            }

            return Files.list(path).mapToLong(PathSize::calculateSize).sum();
        } catch (IOException e) {
            return 0L;
        }
    }

}

calculateSizeপদ্ধতির জন্য সার্বজনীন Pathবস্তু, তাই এটি আরো ফাইল জন্য কাজ করে। নোট যে যদি একটি ফাইল বা ডিরেক্টরির অ্যাক্সেসযোগ্য নয়, এই ক্ষেত্রে ফিরে আকার পথ বস্তুর হতে হবে 0


3

File.length()( জাভাদোক )

মনে রাখবেন যে এটি ডিরেক্টরিগুলির জন্য কাজ করে না, বা কাজ করার গ্যারান্টিযুক্ত নয়।

একটি ডিরেক্টরি জন্য, আপনি কি চান? যদি এটির নীচে সমস্ত ফাইলের মোট আকার হয় তবে আপনি বাচ্চাদের পুনরাবৃত্তভাবে ব্যবহার করে File.list()এবং File.isDirectory()তাদের আকারগুলি যোগ করতে এবং যোগ করতে পারেন ।


3

Fileঅবজেক্ট টি lengthপদ্ধতি:

f = new File("your/file/name");
f.length();

3
  • অ্যান্ড্রয়েড এবং জাভা জন্য কাজ করে
  • ফোল্ডার এবং ফাইল উভয়ের জন্য কাজ করে
  • যেখানে যেখানে প্রয়োজন সেখানে নাল পয়েন্টার পরীক্ষা করে
  • প্রতীকী লিঙ্ক ওরফে শর্টকাট উপেক্ষা করে
  • উত্পাদন প্রস্তুত!

সোর্স কোড:

   public long fileSize(File root) {
        if(root == null){
            return 0;
        }
        if(root.isFile()){
            return root.length();
        }
        try {
            if(isSymlink(root)){
                return 0;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return 0;
        }

        long length = 0;
        File[] files = root.listFiles();
        if(files == null){
            return 0;
        }
        for (File file : files) {
            length += fileSize(file);
        }

        return length;
    }

    private static boolean isSymlink(File file) throws IOException {
        File canon;
        if (file.getParent() == null) {
            canon = file;
        } else {
            File canonDir = file.getParentFile().getCanonicalFile();
            canon = new File(canonDir, file.getName());
        }
        return !canon.getCanonicalFile().equals(canon.getAbsoluteFile());
    }

1

উইন্ডোজের জন্য java.io ব্যবহার করে এই রিকার্সিভ ফাংশনটি কার্যকর।

    public static long folderSize(File directory) {
    long length = 0;

    if (directory.isFile())
         length += directory.length();
    else{
        for (File file : directory.listFiles()) {
             if (file.isFile())
                 length += file.length();
             else
                 length += folderSize(file);
        }
    }

    return length;
}

এটি পরীক্ষা করা হয় এবং আমার শেষ পর্যন্ত সঠিকভাবে কাজ করে।


1

আমি পরীক্ষা করেছি du -c <folderpath>এবং নিও.ফায়ালস বা পুনরাবৃত্তির চেয়ে 2x দ্রুত

private static long getFolderSize(File folder){
  if (folder != null && folder.exists() && folder.canRead()){
    try {
      Process p = new ProcessBuilder("du","-c",folder.getAbsolutePath()).start();
      BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String total = "";
      for (String line; null != (line = r.readLine());)
        total = line;
      r.close();
      p.waitFor();
      if (total.length() > 0 && total.endsWith("total"))
        return Long.parseLong(total.split("\\s+")[0]) * 1024;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  return -1;
}

0
public long folderSize (String directory)
    {
        File curDir = new File(directory);
        long length = 0;
        for(File f : curDir.listFiles())
        {
            if(f.isDirectory())
            {               
                 for ( File child : f.listFiles()) 
                 {
                     length = length + child.length();
                 }

                System.out.println("Directory: " + f.getName() + " " + length + "kb");
            }
            else
            {
                length = f.length();
                System.out.println("File: " + f.getName() + " " + length + "kb");
            }
            length = 0;
        }
        return length;
    }

0

প্রচুর গবেষণা ও স্ট্যাকওভারফ্লোতে প্রস্তাবিত বিভিন্ন সমাধান অনুসন্ধান করার পরে। আমি অবশেষে আমার নিজের সমাধানটি লেখার সিদ্ধান্ত নিয়েছি। আমার উদ্দেশ্য হ'ল নো-থ্রো মেকানিজম রয়েছে কারণ আমি এপিআই ফোল্ডারের আকার আনতে অক্ষম হলে ক্রাশ করতে চাই না। এই পদ্ধতিটি বহু-থ্রেডযুক্ত দৃশ্যের জন্য উপযুক্ত নয়।

সবার আগে আমি ফাইল সিস্টেম ট্রি থেকে বেরিয়ে যাওয়ার সময় বৈধ ডিরেক্টরিগুলি পরীক্ষা করতে চাই।

private static boolean isValidDir(File dir){
    if (dir != null && dir.exists() && dir.isDirectory()){
        return true;
    }else{
        return false;
    }
}

দ্বিতীয়ত আমি চাই না যে আমার পুনরাবৃত্ত কলটি সিমলিংকগুলিতে (সফটলিঙ্কগুলি) যেতে এবং মোট সামগ্রীতে আকারটি অন্তর্ভুক্ত করা উচিত।

public static boolean isSymlink(File file) throws IOException {
    File canon;
    if (file.getParent() == null) {
        canon = file;
    } else {
        canon = new File(file.getParentFile().getCanonicalFile(),
                file.getName());
    }
    return !canon.getCanonicalFile().equals(canon.getAbsoluteFile());
}

অবশেষে নির্দিষ্ট করা ডিরেক্টরিটির আকার আনতে আমার পুনরাবৃত্তি ভিত্তিক বাস্তবায়ন। Dir.listFiles () এর নাল চেকটি লক্ষ্য করুন। জাভাডোকের মতে এই পদ্ধতিটি বাতিল হয়ে যেতে পারে এমন সম্ভাবনা রয়েছে।

public static long getDirSize(File dir){
    if (!isValidDir(dir))
        return 0L;
    File[] files = dir.listFiles();
    //Guard for null pointer exception on files
    if (files == null){
        return 0L;
    }else{
        long size = 0L;
        for(File file : files){
            if (file.isFile()){
                size += file.length();
            }else{
                try{
                    if (!isSymlink(file)) size += getDirSize(file);
                }catch (IOException ioe){
                    //digest exception
                }
            }
        }
        return size;
    }
}

কেকের কিছু ক্রিম, এপিআই তালিকার আকার পেতে ফাইলগুলি (মূলত সমস্ত ফাইল এবং ফোল্ডার হতে পারে)।

public static long getDirSize(List<File> files){
    long size = 0L;
    for(File file : files){
        if (file.isDirectory()){
            size += getDirSize(file);
        } else {
            size += file.length();
        }
    }
    return size;
}

0

লিনাক্সে যদি আপনি ডিরেক্টরিগুলি বাছাই করতে চান তবে du -hs * | সাজান -h


0

আপনি Apache Commons IOসহজেই ফোল্ডারের আকার সন্ধান করতে পারেন।

আপনি যদি ম্যাভেন হয়ে থাকেন তবে দয়া করে আপনার pom.xmlফাইলে নিম্নলিখিত নির্ভরতা যুক্ত করুন।

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

যদি মাভেনের কোনও ভক্ত না হন তবে নীচের জারটি ডাউনলোড করুন এবং এটি শ্রেণীর পথে যুক্ত করুন।

https://repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar

public long getFolderSize() {

    File folder = new File("src/test/resources");
    long size = FileUtils.sizeOfDirectory(folder);

    return size; // in bytes
}

কমন্স আইও এর মাধ্যমে ফাইলের আকার পেতে,

File file = new File("ADD YOUR PATH TO FILE");

long fileSize = FileUtils.sizeOf(file);

System.out.println(fileSize); // bytes

এটি মাধ্যমেও অর্জনযোগ্য Google Guava

মাভেনের জন্য, নিম্নলিখিতগুলি যুক্ত করুন:

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.1-jre</version>
</dependency>

মাভেন ব্যবহার না করা হলে, ক্লাসের পথে নিম্নলিখিতটি যুক্ত করুন

https://repo1.maven.org/maven2/com/google/guava/guava/28.1-jre/guava-28.1-jre.jar

public long getFolderSizeViaGuava() {
        File folder = new File("src/test/resources");
        Iterable<File> files = Files.fileTreeTraverser()
                .breadthFirstTraversal(folder);
        long size = StreamSupport.stream(files.spliterator(), false)
                .filter(f -> f.isFile())
                .mapToLong(File::length).sum();

        return  size;
    }

ফাইলের আকার পেতে,

 File file = new File("PATH TO YOUR FILE");
 long s  = file.length();
 System.out.println(s);

0
private static long getFolderSize(Path folder) {
        try {
            return Files.walk(folder)
                      .filter(p -> p.toFile().isFile())
                      .mapToLong(p -> p.toFile().length())
                      .sum();
        } catch (IOException e) {
            e.printStackTrace();
            return 0L;
        }

যদিও আপনার কোডটি দুর্দান্ত দেখাচ্ছে, আমি নিশ্চিত নই যে এটি অন্যান্য উত্তরের সাথে কিছু যুক্ত করেছে। যদি তা হয় তবে দয়া করে ব্যাখ্যা করার জন্য আপনার উত্তরটি সম্পাদনা করুন।
24:54

কোডের কম লাইনে একই কাজ করার এটি কেবলমাত্র একটি আপডেট সংস্করণ।
জস্করণ সিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.