JAVA를 이용한 File 삭제 및 이동
이번은 프로젝트 개발 완료 하고 유지보수 진행 중에 클라이언트의 개인정보 처리 방침을 적용하여 등록된 개인정보와 연관된 첨부파일 삭제를 요청 받으면서 앞으로 파일 삭제하는일이 많아질꺼같아서 정리해 보자는 마음으로 정리하게 됐습니다.
저와 같은 IT쪽 일을 하시는분들이나 하실려는 분들에게 도움이 됐으면 좋겠습니다. ㅎㅎ
현재 프로젝트에서 사용하는 언어는 JAVA와 DB는 ORACLE을 사용합니다. 물론 mysql, tibero도 사용하는 사이트도 관리는 하고있습니다. DB는 현재 글로 쓸려는 부분과는 상관없어서 넘어가고.. 생각난김에 다음번은 cmd 쉘 스크립트를 이용한 방식도 정리해봐야겠습니다.
어짜피 DB에서 파일 경로를 조회해서 가져오는 부분은 시스템에 맞게 개발하시면 되고
파일관련 소스는 아래와 같이 만드시면 될꺼같습니다.
개발하시는 분들이라면 너무 심플한 소스기 때문에 추가 설명이 필요하지는 않을꺼같지만..
공부하시는 분들을 위해서
File deleteFile = new File(filePath); ==> File object를 생성 후 삭제할 파일 경로인 filePath를 넣어주고 경로에 파일이 존재하면 파일의 delete() 메소드를 이용하여 해당위치에 존재하는 파일을 삭제 합니다.
간단하죠?? 하지만 저도 자주 쓰지 않아서 할때마다 검색해보고 헷갈려 합니다.. ㅠ_ㅠ;
작성하는김에 비슷하지만 삭제와는 조금 다른 파일 이동에대해서도 알아보죠..
역시 간단합니다;;
구 파일 위치와 옴길 파일위치를 지정하고
* StandardCopyOption
copy, move와 같은 메소드를 사용할 때 옵션을 줄 수 있는 기본 라이브러리의 열거형 클래스입니다.
옵션은 여러개를 동시에 줄 수 있습니다.
ATOMIC_MOVE - move 전용, 원자적 이동을 보장복사
COPY_ATTRIBUTES - 모든 파일 속성(File Attributes)을 복사
REPLACE_EXISTING - Dest 파일이 이미 존재하면 파일의 내용을 복사해서 덮어씀
사용한 ATOMIC_MOVE의 상세 설명은..
파일 이동 중에 어떠한 방해가 생기더라도 이동 작업을 끝까지 보장한다는 의미입니다.
즉, 파일 이동 중에 어떤 프로세스가 간섭해서 중단명령을 내려도 이를 무시하고 이동을 완료한 뒤 작업을 진행 합니다.
예를 들면, 멀티 스레드 환경에서는 다른 스레드를 강제 중단시키는 인터럽트(interrupt) 기능을 사용할 수 있습니다.
기본적으로 인터럽트(interrupt)가 발생하면 스레드가 바로 중단돼야 하지만 파일 전송의 경우 끊기면 문제가 발생할 수 있기 때문에 전송이 다 될 때까지 스레드를 중단시키지 않는 것입니다.
오늘은 이쯤 하고 다음번에 더욱더 피가되고 살이되고 기억에 꼭 남는 그런 내용을 가지고 작성하도록 하겠습니다.
앞으로도 이것저것 잘 잊어버리는 기억력 때문에 시작한 블로그지만.. 하나하나 좋은 정보를 정리해서 필요한 여러 사람과 함께 기억하고 알아가는 기회가 되도록 노력하겠습니다.
'굿Tip존' 카테고리의 다른 글
동물, 죽음 등 간단한 꿈 해몽 풀이 (3) | 2024.10.28 |
---|---|
기후동행카드 서울 정기권 (0) | 2024.01.29 |
조선 시대 왕릉과 그 주인 (0) | 2022.09.06 |
비타민 E 효능 효과 (0) | 2021.07.27 |
오라클 타임스탬프 복구 기능 간단 정리 (0) | 2021.07.02 |