2013-11-01 4 views
-1

두 배열에서 공통 이름 파일을 찾으려고합니다. 두 개의 다른 폴더에있는 파일 이름을 두 개의 다른 배열에 저장했습니다.두 배열에서 공통 파일 찾기

이제 공통 이름을 가진 파일을 포함하는 공통 파일 배열을 만듭니다.

파일 이름 1 : 폴더에있는 파일의 이름을 contaning 배열 1.

파일 이름 2 : 배열은이 코드를 작성하지만 컴파일러는이 오류를 제공 2.

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()); 
       System.out.println(f1[i] + " is a file"); 
      } 

     } 

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

      if (listOfFiles2[j].isFile()) 
      { 
       fileNames2.add(listOfFiles2[j].getName()); 
      } 
     } 

     ArrayList<String> commonfiles = new ArrayList<>(); 
     for (int i = 0; i < listOfFiles1.length; i++) 
     { 
     for (int j = 0; i < listOfFiles2.length; j++) 
      { 
      String tempfilename1; 
      String tempfilename2; 
      tempfilename1=fileNames1[i]; 
      tempfilename2 = fileNames2[j]; 
      if(tempfilename1.equals(tempfilename2)) 
       { 
       commonfiles.add(tempfilename1); 
       } 
      } 
     }     
    } 
} 

폴더에있는 파일의 이름을 contaning : filenames1 만약

Main.java:52: error: array required, but ArrayList<String> found 
      tempfilename1=fileNames1[i]; 
            ^
Main.java:53: error: array required, but ArrayList<String> found 
      tempfilename2 = fileNames2[j]; 
            ^

P.S : I am a Newbie...

+0

무엇이 질문입니까? – fxm

+0

@fxm : 편집 됨 ... – Shubham

+0

변수를 확인하십시오. 저는 여러분이 입력을 문자열의 배열로 만들고 arraylist로 사용하려고 시도했다고 생각합니다. –

답변

5

당신이 할 수있는 array입니다 ArrayList 방법 get(int i)을 사용하지 마십시오.

arrayName[elementIndex]을 사용하여 array 요소에 액세스해야합니다. 귀하의 경우에는

:

tempfilename1=filenames1[i]; 
tempfilename2=fileNames2[j]; 
0

당신은 두 배열 사이에 문자열의 공통 집합을 얻기 위해 다음을 수행 할 수 :

String[] listOfFiles1 = {"file1", "file2", "file3"}; 
    String[] listOfFiles2 = {"file2", "file3", "file5"}; 

    HashSet<String> common = new HashSet<String>(Arrays.asList(listOfFiles1)); 
    common.retainAll(new HashSet<String>(Arrays.asList(listOfFiles2))); 

    System.out.println(common); // -> output: file2, file3 

당신은 비록 설정으로 변환 할 필요가 없습니다, 그러나 이것은 중복 키의 위험을 제거합니다. 중복을 표시하려면 조금 단순화 할 수 있습니다.

List<String> common = new ArrayList<String>(Arrays.asList(listOfFiles1)); 
    list1.retainAll(Arrays.asList(listOfFiles2));