어쨌든 파일에 Path
이 있다고 가정합니다. 어쩌면 Paths.get()
을 사용하면됩니다. 또는 파일을 보유한 폴더 (디렉토리)에 대한 경로를 가져오고 Files.list()
을 사용하여 폴더의 각 파일에 대한 경로를 가져옵니다. Path
에서 파일 이름을 가져옵니다 (예 : 2017-11-2_23-59-59
).
DateTimeFormatter
및 LocalDateTime
을 사용하여 파일 이름을 날짜 - 시간으로 구문 분석하는 것이 좋습니다. DateTimeFormatter
의 형식 패턴을 지정할 때 대/소문자를 구분합니다. uuuu-M-d_H-mm-ss
과 같은 패턴이 필요합니다. 제발 너를 미쳤어.
대상 폴더에 대해 Path
(예 : 2017/11/02
)을 새로 작성하십시오. 귀하의 날짜 - 시간에서 getYear
, getMonthValue
및 getDayOfMonth
을 사용하여 년, 월, 일을 구하십시오. 또는 형식자를 사용하여 int
이 아닌 문자열로 가져올 수 있습니다. 나는 모든 달과 날짜 폴더에 대해 두 자리 이름을 선호합니다 (9 월은 09
이고 두 번째 달은 02
). 어떤 경우에는 올바른 시간 순 정렬을하는 데 도움이됩니다. 그러나, 당신은 당신의 요구 사항을 알고 있습니다. 다시 경로를 구축하려면 Paths.get()
을 사용하십시오. 그런 다음 Files.createDirectories()
을 사용하여 파일 시스템에 중첩 폴더가 만들어 졌는지 확인하십시오 (이미있는 경우 메서드는 아무 작업도 수행하지 않고 경로 만 반환합니다).
Path.resolve()
을 사용하여 파일 경로를 폴더 경로에 추가하십시오. 마지막으로 Files.move()
은 파일을 대상 폴더로 옮깁니다.
해피 코딩.
이것은 상당히 간단합니다. 어느 부분에서 고심하고 있습니까? –
글쎄, 파일 이름을 구문 분석하고, 아직 존재하지 않으면 디렉토리를 만든 다음 파일을 이동하십시오. 이 모든 것은 아주 간단한 작업입니다. 하지만 자바 IO 입문서, javadoc을 읽으려면 약간의 연구가 필요할 것이다. 이것은 개발자의 일의 일부입니다. –
이것은 하나의 시간대 나 UTC의 오프셋 하나에서만 발생한다고 가정합니까? 타임 스탬프의 영역 오프셋을 알지 못하는 것이 약간 불편합니다. 아니면 모두 UTC입니까? 그리고 파일을 UTC로 날짜별로 저장해도 괜찮습니까? –