2017-11-02 14 views
-4

파일 이름에 타임 스탬프가있는 파일이 있습니다. 나는이 파일을 년/월/일 폴더로 옮기고 싶다.자바에서 시간 소인을 기준으로 연도/월/일 폴더로 파일을 이동하는 방법

예 : fileName = 2017-11-2_23-59-59 (YYYY-mm-dd_HH-MM-SS). 이제이 파일을 2017 폴더로 옮기고 해당 폴더 안에 11 (월) 폴더와 그 2 (날짜) 폴더 안에 폴더가없는 경우이 파일을 만듭니다.

그래서 모든 요일 폴더는 월 폴더 안에 있어야하고 개월 폴더는 연도 폴더 안에 있어야합니다. 이것은 내가 필요한 폴더 구조입니다.

그럼 누구든지 Java에서이를 달성하는 방법을 알려주십시오.

+1

이것은 상당히 간단합니다. 어느 부분에서 고심하고 있습니까? –

+2

글쎄, 파일 이름을 구문 분석하고, 아직 존재하지 않으면 디렉토리를 만든 다음 파일을 이동하십시오. 이 모든 것은 아주 간단한 작업입니다. 하지만 자바 IO 입문서, javadoc을 읽으려면 약간의 연구가 필요할 것이다. 이것은 개발자의 일의 일부입니다. –

+0

이것은 하나의 시간대 나 UTC의 오프셋 하나에서만 발생한다고 가정합니까? 타임 스탬프의 영역 오프셋을 알지 못하는 것이 약간 불편합니다. 아니면 모두 UTC입니까? 그리고 파일을 UTC로 날짜별로 저장해도 괜찮습니까? –

답변

0

이 당신을 위해 도움이 될 수 있습니다

String file = form.getFile().getOriginalFilename(); 
String[] dateParts = file.split("-"); 
String year = dateParts[0]; 
String month = dateParts[1]; 
String day = dateParts[2]; 
String UPLOADED_FOLDER = "C://Users//pandeyv//Desktop//"+year+"//"+month+"//"+day+"//"; 
File dir = new File(UPLOADED_FOLDER); 
if (!dir.exists()) 
    dir.mkdirs(); 

희망이 도움이!

0

어쨌든 파일에 Path이 있다고 가정합니다. 어쩌면 Paths.get()을 사용하면됩니다. 또는 파일을 보유한 폴더 (디렉토리)에 대한 경로를 가져오고 Files.list()을 사용하여 폴더의 각 파일에 대한 경로를 가져옵니다. Path에서 파일 이름을 가져옵니다 (예 : 2017-11-2_23-59-59).

DateTimeFormatterLocalDateTime을 사용하여 파일 이름을 날짜 - 시간으로 구문 분석하는 것이 좋습니다. DateTimeFormatter의 형식 패턴을 지정할 때 대/소문자를 구분합니다. uuuu-M-d_H-mm-ss과 같은 패턴이 필요합니다. 제발 너를 미쳤어.

대상 폴더에 대해 Path (예 : 2017/11/02)을 새로 작성하십시오. 귀하의 날짜 - 시간에서 getYear, getMonthValuegetDayOfMonth을 사용하여 년, 월, 일을 구하십시오. 또는 형식자를 사용하여 int이 아닌 문자열로 가져올 수 있습니다. 나는 모든 달과 날짜 폴더에 대해 두 자리 이름을 선호합니다 (9 월은 09이고 두 번째 달은 02). 어떤 경우에는 올바른 시간 순 정렬을하는 데 도움이됩니다. 그러나, 당신은 당신의 요구 사항을 알고 있습니다. 다시 경로를 구축하려면 Paths.get()을 사용하십시오. 그런 다음 Files.createDirectories()을 사용하여 파일 시스템에 중첩 폴더가 만들어 졌는지 확인하십시오 (이미있는 경우 메서드는 아무 작업도 수행하지 않고 경로 만 반환합니다).

Path.resolve()을 사용하여 파일 경로를 폴더 경로에 추가하십시오. 마지막으로 Files.move()은 파일을 대상 폴더로 옮깁니다.

해피 코딩.

+0

고마워요. 나는 그것을 완료했다. –