2013-07-07 132 views
0

Java For-each-loop:我試圖映射從下面的操作中檢索到的數據並將其映射到對象模型。不幸的是,它僅輸出檢索到的對象中的最後一個對象。請任何人都可以檢查代碼的問題。for-each循環錯誤

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標記:是的,代碼很好。沒有錯誤。 ...必須從圖片對象添加到圖片文件的ArrayList。它只需要獲取最後一個圖片文件。 –

回答

7

移動此行

PictureFile picturefile = new PictureFile(); 

內循環,不然你只有一個元素更新。

+0

謝謝! ..沒有注意到那個錯誤。猜猜我現在真的很累了。再次感謝! –