110.11. 로컬 작업 디렉터리 사용

Camel은 원격 FTP 서버에서 소비하고 파일을 로컬 작업 디렉토리로 직접 다운로드할 수 있도록 지원합니다. 이렇게 하면 FileOutputStream 을 사용하여 로컬 파일로 직접 스트리밍되기 때문에 전체 원격 파일 내용을 메모리에 읽을 수 없습니다.

Camel은 파일이 다운로드되는 동안 확장자가 .inprogress 인 원격 파일과 동일한 이름의 로컬 파일에 저장됩니다. 이후 파일의 이름이 .inprogress 접미사를 제거하도록 변경되었습니다. 마지막으로, Exchange가 완료되면 로컬 파일이 삭제됩니다.

따라서 원격 FTP 서버에서 파일을 다운로드하여 파일로 저장하려면 다음과 같은 파일 끝점으로 라우팅해야 합니다.

from("ftp://someone@someserver.com?password=secret&localWorkDirectory=/tmp").to("file://inbox");
작은 정보

위의 경로는 메모리로 전체 파일 내용을 읽지 않기 때문에 매우 효율적입니다. 원격 파일을 로컬 파일 스트림에 직접 다운로드합니다. 그런 다음 java.io.File 처리가 교환 본문으로 사용됩니다. 파일 프로듀서는 이 사실을 악용하고 작업 파일 java.io.File 에서 직접 작업할 수 있으며 대상 파일 이름에 java.io.File.rename 을 수행할 수 있습니다. Camel은 로컬 작업 파일임을 알 수 있으므로 작업 파일이 제대로 삭제되기 때문에 파일 복사 대신 최적화하고 이름 변경을 사용할 수 있습니다.