2012-08-22 2 views
0

Java 프로그램에서 패턴 형식을 사용하여 유닉스 파일 시스템에서 파일을 읽으려고합니다.Java 특정 패턴을 가진 파일을 읽으십시오.

예를 들어
"XYZ"+"abcd1234"+MMddyyyyHHmmss 

: XYZabc123403222012101329

"ABCD1234"의 중간 패턴이 고정되어 있지 않고, 변경, 그것은 숫자와 총 문자 길이 있도록

파일 이름 패턴이 같다 7.

어떻게 그러한 패턴의 파일을 읽을 수 있습니까? 파일에는 텍스트 또는 직렬화 된 객체가 포함될 수 있습니다.

String path="/tmp/somedir"; 

final File folder = new File("/tmp/somedir"); 
List<String> fileNames = new ArrayList<String>(); 

    try { 
     for (final File fileEntry : folder.listFiles()) { 
      if (fileEntry.isDirectory()) { 
       listFilesForFolder(fileEntry); 
      } else { 
       //System.out.println(fileEntry.getName()); 
       fileNames.add(fileEntry.getName()); 
      } 
     } 

     for(String str: fileNames) { 
      FileInputStream fileIn = new FileInputStream(path+"/"+str); 
     } 

    } catch(FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch(Exception e1) { 
     e1.printStackTrace(); 
    } 

감사합니다.

+3

고유 한 파일 필터를 만드는 방법에 대해 알아 보려면 http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#list(java)를 참조하십시오. io.FilenameFilter) –

+0

요구 사항에 맞는 파일을 디렉토리에서 검색해야합니다. –

답변

0

정규 표현식을 사용할 수 있습니다. C#에서 똑같은 일을하고 있습니다. 공통 접두사, 중간에 날짜 및 공통 파일 확장명을 가진 클라이언트에서 온 파일이 있습니다.

abc1234는 항상 7 자라고 가정하면 다음 정규식 패턴을 사용할 수 있습니다.

XYZ. {7} \ {14의 D}

. {7}의 문자 일곱 번까지가 나타날 수 있음을 의미한다. \ d {14}는 14 자리까지 계산한다는 것을 의미합니다.

+0

답변 해 주셔서 감사합니다. – jamesT

+0

감사합니다. 오신 것을 환영합니다. 많은 사람들이 확실히하지 않습니다. 프로젝트에 행운을 빈다. –

0

this site을 권장합니다. 디렉토리에서 모든 파일을 가져 오는 방법을 알 수 있습니다.

그 다음 방법 : acceptname에 정규 표현식을 적용하십시오.

정규 표현식의 경우 this link을 찾습니다.

+0

답변 해 주셔서 감사합니다. – jamesT

관련 문제