2013-07-07 2 views
0

Java For Each 루프 : 아래 작업에서 검색된 데이터를 매핑하여 개체 모델에 매핑하려고합니다. 불행히도 검색된 객체의 마지막 객체 만 출력합니다. 누구든지 코드 문제가 무엇인지 확인할 수 있습니다.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

또한 그림 파일의 ArrayList에 pictureFile을 추가하는 데 사용되는 방법이 있습니다. public ArrayList getPictureFiles() { 반환 this.pictureFiles; } public void addPictureFile (PictureFile pictureFile) { this.getPictureFiles(). add (pictureFile); } –

+0

@Wan Marker : 예, 코드는 정상입니다. 버그가 없습니다. ... 그림 파일의 ArrayList에 그림 개체를 추가해야합니다. 검색된 마지막 사진 파일 만 필요합니다. –

답변

7

이동이 줄

PictureFile picturefile = new PictureFile(); 
루프 내부

, 그렇지 않으면 당신은 단지 하나 개의 요소를 업데이트하고 있습니다.

+0

감사! 그 실수를 알아 채지 못했다. 지금 나는 정말로 피곤해지고있다. 고맙다! –