2014-10-25 3 views
-2

Я распечатываю файлы всех файлов в каталоге X, но я хотел бы знать, как их добавить? Вот мой кодКак добавить размер каждого файла?

import java.io.File; 
public class abcc { 
public static void main(String [] args) { 
    File nam = new File("C:\\Windows\\System32"); 
    if(nam.exists() && !nam.isDirectory()) 
     System.out.println(nam.getName() + " exists and is " + nam.length()/1024 + " kb"); 

    else if (nam.isDirectory()) 
     System.out.println(""); 
    else 
     System.out.println("0 "); 



if (nam.isDirectory()){ 
for(File f : nam.listFiles()){ 
    System.out.println(f.length()); 
} 


}else if(nam.isFile()){ 


}}} 

Выход что-то вроде этого как я получаю один вывод, который сумма этих чисел? Спасибо

+2

Определяя переменную и используя '+'? –

ответ

0

Вам нужно сохранить сумму в переменной. Поэтому объявите переменную для нее, например.

int totalSize = 0; 

Внутри цикла, вам нужно добавить totalSize с каждой длины файла:

totalSize += f.length(); 

Затем, наконец, печать на выходе.

+0

Я пробовал это, но получаю тот же результат. – user3550204

0

Вам нужна переменная для общего размера, а затем продолжайте добавлять размеры отдельных файлов. Начиная с f.length() возвращает long, вам необходимо varayable данных типа long. Я редактировал свой код, и теперь он выглядит следующим образом:

import java.io.File; 
public class abcc 
{ 
    public static void main(String [] args) 
    { 
     long total = 0; 
     File nam = new File("C:\\Windows\\System32"); 
     if(nam.exists() && !nam.isDirectory()) 
       System.out.println(nam.getName() + " exists and is " + nam.length()/1024 + " kb"); 

     else if (nam.isDirectory()) 
       System.out.println(""); 
     else 
       System.out.println("0 "); 

     if (nam.isDirectory()){ 
       for(File f : nam.listFiles()){ 
        System.out.println(f.length()); 
        total = total+f.length(); 
       } 

     }else if(nam.isFile()){ 

     } 
     System.out.println("Total Size : "+total); 
     } 
} 

Этот код отображает общий размер файлов в конце.

+0

Спасибо, это сработало. – user3550204

+0

@ user3550204 Прошу вас принять ответ! – Hackerdarshi

0

Я бы рекомендовал использовать рекурсивную подпрограмму. Вот мой Рекомендованный код:

import java.io.File; 

public class DirectoryScan { 


    public static void main(String[] args){ 

     File toScan = new File("C:\\Windows\\System32"); 

     System.out.println("Total size is: " + getSize(toScan)/1024 + " kb"); 

    } 

    public static long getSize(File name){ 
     if(name.isDirectory()){//if it is a directory, call this method on all the files in the directory. 
       long size = 0; 
       for(File f : name.listFiles()){ 
        size += getSize(f);//get the size for the directory and add the size of that directory to the total size 
       } 
       return size;//return the size of this directory 
     } 
     else{ 
      System.out.println(name.getName() + " exists and is " + name.length()/1024 + " kb"); 
      return name.length();//return the filesize. 
     } 
    } 
} 

В основном GETSIZE (Файл) называется рекурсивно (для каждой папки/файла) и возвращает размер этой папки/файл.

Смежные вопросы