2013-07-07 162 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

谢谢! ..没有注意到那个错误。猜猜我现在真的很累了。再次感谢! –