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 핸들이 Exchange 본문으로 사용됩니다. 파일 제작자는 이 팩트를 활용하여 작업 파일 java.io.File 핸들에서 직접 작업할 수 있으며 java.io.File.rename 을 대상 파일 이름으로 수행할 수 있습니다. Camel은 로컬 작업 파일이므로 작업 파일을 삭제해야 하므로 파일 복사 대신 이름을 최적화하고 사용할 수 있습니다.