Research Breakthrough Possible @S-Logix pro@slogix.in

Office Address

Social List

How to Find Folder Size in Java?

Find Folder Size in Java

Condition for Finding Folder Size in Java

  • Description: To find the size of a folder in Java, the `File` class from the `java.io` package is commonly used. The process involves recursively traversing the folder and summing the sizes of all files within it. First, a `File` object representing the folder is created, and the `listFiles()` method is called to retrieve the contents of the folder. If a file is a regular file, its size can be obtained using the `length()` method. If a directory is encountered, the same process is applied recursively to all files and subdirectories within it. The total size is accumulated by adding the sizes of the files. For large directories or more complex operations, Java's `nio` package or streams can also be utilized for more efficient handling of file traversal.
Sample Source Code
  • # FolderSize.java
    package JavaSamples2;

    import java.io.File;
    import javax.swing.JFileChooser;

    public class FolderSize extends javax.swing.JFrame {

    public FolderSize() {
    initComponents();
    }

    @SuppressWarnings("unchecked")
    // //GEN-BEGIN:initComponents
    private void initComponents() {

    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jLabel1.setText("Folder Size Calculator");

    jLabel2.setText("Folder :");

    jButton1.setText("Choose Folder");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton1ActionPerformed(evt);
    }
    });

    jButton2.setText("Find Size");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton2ActionPerformed(evt);
    }
    });

    jTextArea1.setColumns(20);
    jTextArea1.setRows(5);
    jScrollPane1.setViewportView(jTextArea1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 271, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGap(106, 106, 106)
    .addComponent(jLabel1))
    .addGroup(layout.createSequentialGroup()
    .addGap(27, 27, 27)
    .addComponent(jLabel2)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 243, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGroup(layout.createSequentialGroup()
    .addGap(125, 125, 125)
    .addComponent(jButton1))
    .addGroup(layout.createSequentialGroup()
    .addGap(144, 144, 144)
    .addComponent(jButton2))))
    );
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGap(26, 26, 26)
    .addComponent(jLabel1)
    .addGap(26, 26, 26)
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(jLabel2)
    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGap(18, 18, 18)
    .addComponent(jButton1)
    .addGap(29, 29, 29)
    .addComponent(jButton2)
    .addGap(18, 18, 18)
    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap(32, Short.MAX_VALUE))
    );

    pack();
    }

    //GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    JFileChooser folderChooser = new JFileChooser();
    folderChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    int returnValue = folderChooser.showOpenDialog(this);
    if (returnValue == JFileChooser.APPROVE_OPTION) {
    String selectedFolderPath = folderChooser.getSelectedFile().getAbsolutePath();
    jTextField1.setText(selectedFolderPath);
    }
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    String folderPath = jTextField1.getText();

    File folder = new File(folderPath);

    long folderSize = getFolderSize(folder);

    jTextArea1.append("Folder size: " + folderSize + " bytes (" + folderSize / (1024 * 1024) + " MB)");
    }

    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(() -> {
    new FolderSize().setVisible(true);
    });
    }

    // Variables declaration
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration

    private long getFolderSize(File folder) {
    long length = 0;
    File[] files = folder.listFiles();
    if (files != null) {
    for (File file : files) {
    if (file.isFile()) {
    length += file.length();
    } else if (file.isDirectory()) {
    length += getFolderSize(file);
    }
    }
    }
    return length;
    }
Screenshots
  • STEP 1: The user selects a folder from local files.
  • The user selects a folder from local files.

  • STEP 2: The user clicks the 'Choose Folder' button to navigate their local device and choose a folder.
  • The user clicks the 'Choose Folder' button to navigate their local device and choose a folder.

  • STEP 3: The folder path will be displayed in the text field.
  • The folder path will be displayed in the text field.

  • STEP 4: The user clicks the 'Find Size' button, and the folder size is displayed in the text area.
  • The user clicks the 'Find Size' button, and the folder size is displayed in the text area.