3 回答
TA贡献1829条经验 获得超9个赞
我能够通过在外部类的方法中创建内部类来实现这一点。在这个内部类中,我创建了一个计算目录大小的方法。我知道这并不理想,但这是一个有很多限制的家庭作业。很高兴让它工作。
OuterClass --> recursionMethod() --> InnerClass --> getDirSizeMethod()
类列表目录{
private void recurseDirectory(File f) {
class InnerClass {
private long recurseFolder(File f) {
long folderLength = 0;
File[] files = f.listFiles();
for (File file : files) {
if (file.isFile())
{ folderLength += file.length(); }
else if (f.isDirectory())
{ folderLength += recurseFolder(file); }
}
return folderLength;
}
}
if (f.isFile())
{ show f.getAbsolutePath() and f.length() on GUI }
else if (f.isDirectory()) {
InnerClass inner = new InnerClass();
long dirSize = inner.recurseFolder(f);
show f.getAbsolutePath() and FileUtils.sizeOfDirectory(f) on GUI }
File[] files = f.listFiles();
for (File file : files)
{ recurseDirectory(file); }
}
}
TA贡献1828条经验 获得超4个赞
您可以使用另一种方法来计算大小,这也是递归的
private void recurseDirectory(File file) {
System.out.println(file.getAbsolutePath() + " - " + size(file));
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
recurseDirectory(f);
}
}
}
private long size(File file) {
if(file.isFile()){
return file.length();
} else if(file.isDirectory()){
long size = 0;
File[] files = file.listFiles();
for (File f : files) {
size += size(f);
}
return size;
}
return 0;
}
TA贡献1827条经验 获得超9个赞
private long recurseDirectory(File file) {
if(file.isFile()){
System.out.println(file.getAbsolutePath() + " - " + file.length());
return file.length();
} else if (file.isDirectory()) {
long size = 0;
File[] files = file.listFiles();
for (File f : files) {
size += recurseDirectory(f);
}
System.out.println(file.getAbsolutePath() + " - " + size);
return size;
}
return 0;
}
添加回答
举报