2014-02-27 1 views
0

다음 형식의 파일이 들어있는 디렉토리가 있습니다. 당신이 파일의 이름은 타임 스탬프를 포함 볼 수있는 파일은 diretory에있는이 /incoming/external/dataJava의 타임 스탬프를 기반으로 최신 파일 가져 오기

ABC_20100806.csv 
ABC_20100807.csv 
ABC_20100808.csv 
ABC_20100809.csv 
ABC_20100810.csv 
ABC_20100811.csv 
ABC_20100812.csv 

했다. ie [RANGE]_[YYYYMMDD].csv

내가해야 할 일은 시스템 타임 스탬프가 아니라 파일 이름에 타임 스탬프를 사용하는 최신 날짜가있는 파일을 찾아 변수에 파일 이름을 저장하고 다른 디렉토리로 이동 한 다음 나머지 파일을 Java의 다른 디렉토리

+0

어휘로 그 이름을 정렬 할 수 있어야합니다. 어떤 이슈가 있습니까? –

답변

3

당신은 사용하여 배열에 파일 이름을 읽을 수 있습니다

File directory = new File("/incoming/external/data"); 
String[] fileNames = directory.list(new FilenameFilter() { 
    public boolean accept(File dir, String fileName) { 
     return fileName.endsWith(".csv"); 
    } 
}); 

그리고 거기에서

단순히 배열을 정렬 파일은 항상 같은 접두사가있는 경우 :

Arrays.sort(fileNames); 

한 가지 방법은 당신이를 제거 할 수 있습니다 각 파일 이름의 접미사와 접미사는 다음과 같습니다.

int underline = fileName.indexOf("_"); 
int dot = fileName.indexOf("."); 
String datePart = fileName.substring(underline, dot); 

그 문자열을 배열에 추가하고 (어휘 적으로) 정렬합니다.

다른 이유로 자바 날짜로 날짜를 변환 할 경우

, 당신은 사용할 수 있습니다

SimpleDateFormat dt = new SimpleDateFormat("yyyymmdd"); 
Date date = dt.parse(datepart); 

그리고 당신은 자바 날짜를해야하는 당신은 정렬 할 수도 있습니다 배열 또는 목록입니다.

관련 문제