2013-07-07 3 views
0

Java For-each-loop: Я пытаюсь отобразить данные, полученные из приведенной ниже операции, и сопоставить их с объектной моделью. К сожалению, он выводит только последний объект из извлеченного объекта. Пожалуйста, кто-нибудь может проверить, что может быть проблемой с кодом.ошибка для каждого цикла

public void listAllFilesInTheDirectoryAndSubdirectories(String aDirectoryName){ 
    AppDirectory appdirectory = new AppDirectory(); 
    PictureFile picturefile = new PictureFile(); 

    ArrayList<AppDirectory> subdirectories = new ArrayList<AppDirectory>(); 
    ArrayList<PictureFile> picturefiles = new ArrayList<PictureFile>(); 

    appdirectory.setName(aDirectoryName); 
    appdirectory.setPictureFiles(picturefiles); 
    appdirectory.setSubDirectories(subdirectories); 

    File directory = new File(aDirectoryName); 
    //get all the files from a directory 
    File[] allFiles = directory.listFiles(); 
    //Using a for-each loop to loop through each file in the list of files returned 
    for (File file : allFiles){ 
     //Check if the file is-a-file, then print it out   
     if (file.isFile()){ 

      String filePath = file.getAbsolutePath(); 
      String fileName = file.getName(); 
      String folderName = file.getParentFile().getName(); 

      if(folderName.equals(aDirectoryName)){ 

       System.out.println("Directory Name is : "+appdirectory.getName()); 
       System.out.println(folderName); 
       System.out.println(fileName); 
       picturefile.setName(fileName); 
       picturefile.setType("jpeg"); 
       picturefile.setLength(2354); 
       Dimension dimension = new Dimension(656, 413); 
       picturefile.setSize(dimension); 
       picturefile.setLength(50023); 

       appdirectory.addPictureFile(picturefile); 


      }else{ 
       //appdirectory.setName(folderName); 
       //picturefile.setName(filePath); 
       //appdirectory.addPictureFile(picturefile); 
       //subdirectories.add(appdirectory);     

      }   

    }else if(file.isDirectory()){ 
     listAllFilesInTheDirectoryAndSubdirectories(file.getAbsolutePath()); 

    } 

} 
    // System.out.println(picturefiles.size()); 

    for(int x = 0; x<appdirectory.getPictureFiles().size(); x++){ 
     System.out.println(appdirectory.getPictureFiles().get(x).getName()); 

    } 

}

+2

Вы пытались отладить с помощью IDE? –

+0

Кроме того, здесь приведены методы, используемые для добавления pictureFile в ArrayList файлов изображений. public ArrayList getPictureFiles() { return this.pictureFiles; } public void addPictureFile (PictureFile pictureFile) { this.getPictureFiles(). Add (pictureFile); } –

+0

@Wand Marker: Да, код в порядке. Ошибок нет. ... должно быть связано с добавлением объекта изображения в ArrayList файлов изображений. Он берет только последний файл изображения, который был восстановлен. –

ответ

7

Перемещение этой линии

PictureFile picturefile = new PictureFile(); 

внутри цикла, или же вы только обновление одного элемента.

+0

Спасибо! .. никто не заметил эту ошибку. Думаю, я действительно устаю. ЕЩЕ РАЗ СПАСИБО! –

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