public static long getFileSize(File file)
{
long size = 0;
if (file.isFile())
{
size += file.length();

else if (file.isDirectory())
{
File[] list = file.listFiles();
for (File f:list)
{
getFileSize(f);
}
}
return size;
}
我想知道为什么我用这个函数获取文件夹的大小时,得到结果总是零?但是可以获取到文件的大小。迷茫中....求大神指导!谢啦!

解决方案 »

  1.   

    getFileSize(f);
    换成
    size += getFileSize(f);
      

  2.   

    把size 定义为静态的
    static long size = 0;
      

  3.   

    public static long getFileSize(File file)
    {
    long size = 0;
    if (file.isFile())
    {
    size += file.length();
    }  
    else if (file.isDirectory())
    {
    File[] list = file.listFiles();
    for (File f:list)
    {
    size = getFileSize(f);}
    }
    return size;
    }
      

  4.   

    public static long getFileSize(File file)
    {
    long size = 0;
    if (file.isFile())
    {
    size += file.length();
    }   
    else if (file.isDirectory())
    {
    File[] list = file.listFiles();
    for (File f:list)
    {
    size += getFileSize(f);
    return size;

    sorry 写错了
      

  5.   

    你的这个方法需要将size申明为全局变量...
      

  6.   

    不知道这个能不能满足你的要求import java.io.File;public class test
    {
    static long size = 0;
    static int number = 0;
    public static void getFileSize(File file)
    {

    if (file.isFile())
    {
    size += file.length();
    number++;
    } else if (file.isDirectory())
    {
    File[] list = file.listFiles();
    for (File f : list)
    {
    getFileSize(f);
    }
    }

    }

    public static void main(String[] args)
    {
    File file = new File("filename");
    getFileSize(file);
    System.out.println("size is"+size+" numbers is "+number);
    }

    }