2013-10-31 2 views
-5

두 개의 폴더에서 파일 이름을 인쇄하려고하는데이 코드는 컴파일되지만 실행할 때 아무 것도주지 않습니다.Java 파일 이름 인쇄

여기서 주요 대상은 두 개의 폴더에있는 공통 이름 파일을 찾고, 두 개의 배열에 파일 이름을 저장 한 다음 정렬을 적용하고 공통 파일을 찾을 것입니다.

package javaapplication13; 

    import java.io.File; 
    import java.util.*; 

    public class ListFiles1 

    { 

     public static void main(String[] args) 
     { 

      String path1 = "C:/"; 
      String path2 = "D:/"; 

      File folder1 = new File(path1); 
      File folder2 = new File(path2); 

      String[] f1=folder1.list(); 

      File[] listOfFiles1 = folder1.listFiles(); 
      File[] listOfFiles2 = folder2.listFiles(); 

      ArrayList<String> fileNames1 = new ArrayList<>(); 
      ArrayList<String> fileNames2 = new ArrayList<>(); 

      for (int i = 0; i < listOfFiles1.length; i++) 
      { 

       if (listOfFiles1[i].isFile()) 
       { 
        fileNames1.add(listOfFiles1[i].getName());//wow 
        System.out.println(listOfFiles1[i].getName()); 
       } 

      } 

      for (int i = 0; i < listOfFiles2.length; i++) 
      { 

       if (listOfFiles2[i].isFile()) 
       { 
        fileNames2.add(listOfFiles2[i].getName());//seriously wow 
       } 
      } 

     } 
    } 
+2

내가 이것에 대한'HashSet'을 사용하지 배열 의사 코드는 뭔가 같은 것입니다. – Cruncher

+2

그래서 나는 다른 날부터 도와 준 코드에서, 당신은 다른 것을 쓴 적이 없었습니다 ...? –

+1

예상대로 루프에 들어가는 지 확인하기 위해 디버깅을 했습니까? – Andrew

답변

0

Loop through ArrayLists. 각 ArrayList에는 파일 이름이있는 그대로 있습니다. 중첩 루프 (루프 내부 루프)이 필요합니다. 중첩 루프의 핵심에서 현재 위치ArrayList 사이의 비교를 수행하려고합니다. 이 경우 .equals() 방법을 사용할 수 있습니다. 이 밖에

//create a new ArrayList called "commonNameList" 
// loop through fileNames1 with position variable "i" 
    //loop through fileNames2 with position variable "j" 
     //tempFileName1 = fileNames1.get(i) 
     //tempFileName2 = fileNames2.get(j) 
     //if tempFileName1 equals tempFileName2 
      //commonNameList.add(tempFileName1) 

확인 :

http://mathbits.com/MathBits/Java/Looping/NestedFor.htm

Simple nested for loop example

How do I compare strings in Java?

+0

Bhaijaan을 통해 많은 덕분에 ... 친절 ... 지난 8개월 내가 코드하지 않은 ... 가르치 려 나는 거의 모든 것을 잊어 버렸습니다 .... 어디서부터 시작할지 도와주세요 ... – Shubham

+0

Teek ha yar. 단순한 우르두어/힌두어 두 harab. 무자 마프 카로. | = ^] –

0

여기에 주요 목표는 내가 두 배열에서 파일 이름을 저장 한 다음 내가 정렬 적용하고 일반 파일을 찾을 수 있습니다,이 폴더에 일반 이름의 파일을 찾을 수 있습니다.

두 가지 배열을 좋아하지 않습니다. 또한, 중복 파일은 아마도 같은 이름과 동일한 길이를 가져야합니다. 당신이 진짜로 이름을 위해가는 경우에, 당신은 조건의 부분 f.length() == temp.length()를 제거 할 수있다.

private static void findDups(String dirName1, String dirName2){ 
    File dir1 = new File(dirName1); 
    File dir2 = new File(dirName2); 
    Map<String,File> fileMap = new HashMap<String,File>(); 
    File[] files = dir1.listFiles(); 
    for(File f : files){ 
     fileMap.put(f.getName(),f); 
    } 

    files = dir2.listFiles(); 
    StringBuilder sb = new StringBuilder(100); 

    for(File f : files){ 
     File temp = fileMap.get(f.getName()); 
     if(temp != null && f.length() == temp.length()){ 
      sb.append("Found duplicate files: ") 
       .append(temp.getAbsolutePath()) 
       .append(" and ") 
       .append(f.getAbsolutePath()); 
      System.out.println(sb); 
      sb.delete(0,sb.length()); 
     } 
    } 
} 
+0

이것은 좋은 코드이지만 그는 Java에 익숙하지 않으므로이 방법을 배우는 것이 최선이 아닙니다. –

+0

@MadConan : 거기에 많은 것들이 내 마음 ... 그래도 감사합니다 – Shubham