K. Sun
K. Sun

Reputation: 1

for-each loop error

Java For-each-loop: I am trying to map the data retrieved from the operation below and mapping it to an object model. Unfortunately, it outputs only the last object from the retrieved object. Please can anyone check what could be the problem with the code.

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());

    } 

}

Upvotes: 0

Views: 179

Answers (1)

jlordo
jlordo

Reputation: 37813

Move this line

PictureFile picturefile = new PictureFile();

inside the loop, or else you're only updating the one element.

Upvotes: 7

Related Questions