일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Bcrypt
- 스프링 프로젝트 기본 설정
- 쇼핑몰 포트폴리오
- 스프링 게시판
- 인증번호 전송
- 스프링 이미지
- oracle 설치방법
- spring 프로젝트
- 스프링 HikariCP
- 스프링 쇼핑몰 프로젝트
- 회원가입 기능
- 스프링 프로젝트
- 로그아웃 기능 구현
- 스프링 게시판 구현
- 스프링 파일 삭제
- 삭제 구현
- 스프링 포트폴리오
- 파일 업로드
- 스프링 쇼핑몰
- BCrypt 적용
- 스프링 메일 전송
- 로그인 기능
- ResponseEntity
- 스프링 프로젝트 설정
- 이미지 출력
- 스프링 업로드
- 정규표현식
- arraylist
- 쇼핑몰 프로젝트
- spring 쇼핑몰
- Today
- Total
Kim VamPa
[Spring][쇼핑몰 프로젝트][29] 상품 이미지 수정 - 7(배치 프로그램 적용 4) 본문
프로젝트 Github : https://github.com/sjinjin7/Blog_Project
프로젝트 포스팅 색인(index) : https://kimvampa.tistory.com/188
목표
DB에 정보가 존재하지 않는 이미지 파일 삭제 작업 구현
저번 포스팅에 이어서 DB 저장되지 않은 이미지 파일 삭제 구현을 진행합니다.
순서
1. 코드 테스트(삭제 대상 파일 분류)
2. 코드 테스트(분류된 파일 삭제)
3. 테스트
1. 코드 테스트(삭제 대상 파일 분류)
앞선 포스팅에서 작성한 코드를 통해 얻어낸 'DB 파일 리스트'와 '디렉토리 파일 리스트'를 서로 비교하여 삭제되어야 할 파일의 리스트를 분류해보겠습니다.
File 객체를 요소로 가지는 List 타입인 removeFileList 변수를 선언하고, 디렉토리 파일 리스트인 targeFile 배열 객체를 활용하여 List 타입으로 변환된 객체를 생성 후 대입해줍니다.
List<File> removeFileList = new ArrayList<File>(Arrays.asList(targetFile));
※ 배열 객체를 리스트 객체로 변경하기 위해 다음의 아래의 코드를 사용하였습니다.
ArrayList 리스트변수명 = new ArrayList<>(Arrays.asList(배열변수명));
removeFileList에 담겨져 있는 데이터들은 디렉토리에 저장되어져 있는 파일이 모두 담겨져 있는데 , targetFile과 checkFilePath 와의 비교를 통해 동일한 데이터를 가지는 있는 File 객체 요소를 제거함으로써 DB에 정보가 저장되지 않은 이미지 File 객체만 남길 것입니다.
이중 for문을 사용한 아래의 코드를 통해서 removeFileList에 checkFilePath(DB 이미지 리스트)에 존재하지 않는 이미지 File 객체만 남기고 나머지 File객체 요소가 제거되도록 작성하였습니다. targetFile과 checkFilePath 의 각 요소들과의 비교를 위해서 targetFile의 요소인 File 객체를 toPath() 메서드를 호출하여 Path 객체로 변환 후 비교를 하였습니다.
List<File> removeFileList = new ArrayList<File>(Arrays.asList(targetFile));
for(File file : targetFile){
checkFilePath.forEach(checkFile ->{
if(file.toPath().equals(checkFile))
removeFileList.remove(file);
});
}
의도대로 removeFileList 에 제거되어야 할 이미지 리스트만 담겼는지 확인하기 위해서 console창에 출력해주는 코드를 작성해주었습니다.
List<File> removeFileList = new ArrayList<File>(Arrays.asList(targetFile));
System.out.println("removeFileList(필터 전) : ");
removeFileList.forEach(file -> {
System.out.println(file);
});
System.out.println("========================================");
for(File file : targetFile){
checkFilePath.forEach(checkFile ->{
if(file.toPath().equals(checkFile))
removeFileList.remove(file);
});
}
System.out.println("removeFileList(필터 후) : ");
removeFileList.forEach(file -> {
System.out.println(file);
});
System.out.println("========================================");
Junit을 통해 해당 코드들을 실행시켜 확인을 합니다.
2. 코드 테스트(분류된 파일 삭제)
삭제되어야 할 File 객체를 얻었기 때문에 이젠 File클래스의 delete() 메서드를 호출하여 해당 파일이 삭제되도록 해주기만 하면 됩니다.
for(File file : removeFileList) {
file.delete();
}
삭제되는 파일을 확인하기 위해 console창에 표시해주는 코드를 추가해주었습니다.
/* 파일 삭제 */
for(File file : removeFileList) {
System.out.println("삭제 : " + file);
file.delete();
}
3. 테스트
작성한 코드가 의도한 대로 도작하는지 확인하기 위해 Junit을 통해 코드를 실행시켜보겠습니다. 실행하기 전 디렉토리에 저장된 파일들을 확인합니다.
Junit을 통해 코드 실행 후 결과입니다.
REFERENCE
- 코드로배우는 스프링 웹 프로젝트(남가람북스)
DATE
- 2020.07.29
'스프링 프레임워크 > 쇼핑몰 프로젝트' 카테고리의 다른 글
[Spring][쇼핑몰 프로젝트][30] (이미지 존재) 상품 정보 삭제 코드 보완 (4) | 2021.08.11 |
---|---|
[Spring][쇼핑몰 프로젝트][29] 상품 이미지 수정 - 8(배치 프로그램 적용 5) (7) | 2021.07.30 |
[Spring][쇼핑몰 프로젝트][29] 상품 이미지 수정 - 6(배치 프로그램 적용 3) (0) | 2021.07.28 |
[Spring][쇼핑몰 프로젝트][29] 상품 이미지 수정 - 5(배치 프로그램 적용 2) (0) | 2021.07.27 |
[Spring][쇼핑몰 프로젝트][29] 상품 이미지 수정 - 4(배치 프로그램 적용 1) (4) | 2021.07.26 |