Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法获取Java中目录的大小_Java_File - Fatal编程技术网

无法获取Java中目录的大小

无法获取Java中目录的大小,java,file,Java,File,我正在尝试获取目录大小,但我猜无法获取,因为我总是获取相同的值。期望的结果是获取每个独立目录的大小。我怎样才能做到这一点 File file = new File(dir + ""); long totalSpace = file.getTotalSpace(); // espacio del disco en bytes archivos.add(dir + " TS: "+tot

我正在尝试获取目录大小,但我猜无法获取,因为我总是获取相同的值。期望的结果是获取每个独立目录的大小。我怎样才能做到这一点

File file = new File(dir + "");                                                         
long totalSpace = file.getTotalSpace(); // espacio del disco en bytes
archivos.add(dir + " TS: "+totalSpace);                                                             
System.out.println(dir + " TS: "+totalSpace);
我得到这个输出:

C:\ TS: 550729170944
C:\$Recycle.Bin TS: 550729170944
C:\.Trash-1000 TS: 550729170944
C:\android-sdk TS: 550729170944
C:\AS2 TS: 550729170944
C:\Autodesk TS: 550729170944
C:\Boot TS: 550729170944
C:\cygwin64 TS: 550729170944
C:\ESD TS: 550729170944
C:\FacturacionElectronica TS: 550729170944
C:\Intel TS: 550729170944
C:\OneDriveTemp TS: 550729170944
C:\opt TS: 550729170944
C:\OSTotoFolder TS: 550729170944
C:\Pentaho TS: 550729170944
C:\PerfLogs TS: 550729170944
C:\production TS: 550729170944
C:\Program Files TS: 550729170944
C:\Program Files (x86) TS: 550729170944
C:\ProgramData TS: 550729170944
C:\QualityStats TS: 550729170944
C:\SQLServer2017Media TS: 550729170944
C:\SRI-DIMM TS: 550729170944
C:\temp TS: 550729170944
C:\UserGuidePDF TS: 550729170944
C:\Users TS: 550729170944
getTotalSpace不返回文件或文件夹大小

返回以此抽象路径名命名的分区的大小


嗨,介意澄清一下吗?您想知道文件的大小,其中有多少数据,或者给定目录中有多少文件

这将统计文件数:

new File(<directory path>).listFiles().length
这将根据以下内容获取目录的大小


只是一个旁注,不要练习像你的语言中有标识符一样嗅代码。这是一个坏习惯,即使你只是在练习一些东西,也不要低估它。如果一个方法的行为不符合你的预期,你应该做的第一件事就是阅读该方法的文档。
private long getFolderSize(File folder) {
long length = 0;
File[] files = folder.listFiles();

int count = files.length;

for (int i = 0; i < count; i++) {
    if (files[i].isFile()) {
        length += files[i].length();
    }
    else {
        length += getFolderSize(files[i]);
    }
}
return length;}

public void whenGetFolderSizeRecursive_thenCorrect() {
long expectedSize = 12607;

File folder = new File("src/test/resources");
long size = getFolderSize(folder);

assertEquals(expectedSize, size);}