웹에 이미지 파일 업로드를 하고 썸네일을 만든 후 원본 파일을 지우는 코드입니다.
        // 임시디렉토리에 파일 저장
        File file = saveToTemp(request);
        // 파일 리사이징
        Thumbnailer tt = new Thumbnailer(file.getPath(),
                getServletContext().getRealPath(request.getContextPath())
                + "/profile/"+ id + ".jpg",
                77, 77);
        tt.createThumbnail();
        boolean delete = file.delete();

작업을 하는 중에 이미지가 삭제되지 않는 현상이 간헐적으로 나타났습니다. 디버깅하기 가장 힘든 상황이죠. 됐다 안됐다 하는 경우 원인이 무엇인지 밝혀내기 어려우니까요.
이상한 일은 디버깅 모드로 작업시에는 전혀 그런 현상이 일어나지 않았습니다.
탐색기에서 삭제하려고 해도 파일을 톰캣이 잡고 있는지 삭제가 안 되었습니다.
톰캣을 내리고 삭제를 해야 지워졌습니다.

boolean으로 반환되는 delete를 출력해보면 false인 경우가 그러했습니다. 지우지 못했으니까 false가 나오겠죠.
결과적으로 썸네일을 만들고 file이 완전히 덜 풀린 상태에서 delete() 시도를 하기 때문이 아닌가 추론해볼 수 있었습니다. 때문에 다음과 같은 시간지연코드를 삽입해서 풀었습니다.

        tt.createThumbnail();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e1) {
        }
        boolean delete = file.delete();

결과는 성공적이었습니다.

아이튠즈가 설치되면서 PC에 있는 MP3와 WMA는 모두 찾아서 등록했을 것입니다.
아이튠즈를 실행하면 안내창이 하나 뜹니다. 오디오 파일에 대한 기본 플레이어로 아이튠즈를 사용하겠냐고 물어봅니다. 보통은 윈앰프나 foobar2000을 쓰죠. iTunes 무겁습니다. 그래서 저는 아니요를 선택했습니다. 아이튠즈는 아직까지는 아이팟을 조정하기 위한 마징가제트 본부 같은 역할만 훌륭하게 해도 좋습니다.
사용자 삽입 이미지

실행을 하고 왼쪽 보관함의 음악 메뉴를 선택하면 우측에 목록이 나타납니다. 파일을 더블클릭하면 플레이됩니다. 재생 중인 노래는 아이튠즈 상단 가운데에 나오게 되고 해당 곡은 파란색 스피커가 앞에 보입니다.

허나, 아이튠즈가 깔린 컴퓨터가 포맷이나 노래의 폴더가 이동했기 때문에 파일을 찾을 수 없다면 회색 동그라미 안에 흰색 느낌표가 보일 것입니다.
사용자 삽입 이미지
더블클릭을 할 경우 아래와 같은 안내를 합니다.
사용자 삽입 이미지

만약에 없다고 해서 함부로 지우기는 그렇습니다. iPod에는 노래가 남아있기 때문입니다. 아이튠즈에 노래가 없다고 목록에서 지우면 iPod 내에 있는 노래도 삭제됩니다.
만약 iPod에 있는 노래가 아이튠즈로 넘어오면 얼마나 좋을까 말이죠.
사용자 삽입 이미지

복사본이 있지 않는 한 지우는 것도 나쁘지는 않습니다.

+ Recent posts