如何获取所选文件和文件夹的实际大小?

时间:2021-11-15 23:02:41
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
File selectedFile = fileChooser.getSelectedFile();
long sizeOfDirectory = FileUtils.sizeOfDirectory(selectedFile);

This isn't generating the actual size of selected files and folders, but gives only a value which is less than actual value.

这不会生成所选文件和文件夹的实际大小,但只提供小于实际值的值。

I am selecting more than one folder at once.

我一次选择多个文件夹。

How do I fix this issue?

我该如何解决这个问题?

1 个解决方案

#1


Actually I am selecting 2 folders, then this issue happens

实际上我选择了2个文件夹,然后出现了这个问题

That's because JFileChooser#getSelectedFile will only return ONE. You need to use JFileChooser#getSelectedFiles and loop over them, calling FileUtils.sizeOfDirectory for each file and summing the results

那是因为JFileChooser#getSelectedFile只返回ONE。你需要使用JFileChooser#getSelectedFiles并循环它们,为每个文件调用FileUtils.sizeOfDirectory并对结果求和

File[] selectedFiles = fileChooser.getSelectedFiles();
long sizeOfDirectory = 0;
for (File file : selectedFiles) {
    sizeOfDirectory += FileUtils.sizeOfDirectory(file);
}

(You should also beware that getSelectedFile and getSelectedFiles may return null)

(您还应该注意getSelectedFile和getSelectedFiles可能返回null)

#1


Actually I am selecting 2 folders, then this issue happens

实际上我选择了2个文件夹,然后出现了这个问题

That's because JFileChooser#getSelectedFile will only return ONE. You need to use JFileChooser#getSelectedFiles and loop over them, calling FileUtils.sizeOfDirectory for each file and summing the results

那是因为JFileChooser#getSelectedFile只返回ONE。你需要使用JFileChooser#getSelectedFiles并循环它们,为每个文件调用FileUtils.sizeOfDirectory并对结果求和

File[] selectedFiles = fileChooser.getSelectedFiles();
long sizeOfDirectory = 0;
for (File file : selectedFiles) {
    sizeOfDirectory += FileUtils.sizeOfDirectory(file);
}

(You should also beware that getSelectedFile and getSelectedFiles may return null)

(您还应该注意getSelectedFile和getSelectedFiles可能返回null)