24.21. 파일에 쓰기
Camel은 물론 파일을 작성할 수도 있습니다(예: 파일 생성). 아래 샘플에서는 디렉터리에 쓰기 전에 처리하는 SEDA 큐에 대한 일부 보고서를 받습니다.
24.21.1. Exchange.FILE_NAME을 사용하여 하위 디렉터리에 쓰기 링크 복사링크가 클립보드에 복사되었습니다!
단일 경로를 사용하면 여러 하위 디렉터리에 파일을 쓸 수 있습니다. 다음과 같이 경로가 설정되어 있는 경우 다음을 수행하십시오.
<route> <from uri="bean:myBean"/> <to uri="file:/rootDirectory"/> </route>
<route>
<from uri="bean:myBean"/>
<to uri="file:/rootDirectory"/>
</route>
myBean
헤더를 Exchange.FILE_NAME
을 다음과 같은 값으로 설정할 수 있습니다.
Exchange.FILE_NAME = hello.txt => /rootDirectory/hello.txt Exchange.FILE_NAME = foo/bye.txt => /rootDirectory/foo/bye.txt
Exchange.FILE_NAME = hello.txt => /rootDirectory/hello.txt
Exchange.FILE_NAME = foo/bye.txt => /rootDirectory/foo/bye.txt
이를 통해 단일 경로를 통해 여러 대상에 파일을 쓸 수 있습니다.
24.21.2. 최종 대상을 기준으로 임시 디렉터리를 통해 파일 작성 링크 복사링크가 클립보드에 복사되었습니다!
경우에 따라 대상 디렉터리와 관련된 일부 디렉터리에 임시로 파일을 써야 합니다. 이러한 상황은 일반적으로 필터링 기능이 제한된 일부 외부 프로세스가 쓰기 중인 디렉터리에서 읽고 있는 경우 발생합니다. 아래 예에서 파일은 /var/myapp/filesInProgress
디렉토리에 기록되고 데이터 전송이 완료된 후 원자적으로 /var/myapp/finalDirectory 'directory로 이동합니다.
from("direct:start"). to("file:///var/myapp/finalDirectory?tempPrefix=/../filesInProgress/");
from("direct:start").
to("file:///var/myapp/finalDirectory?tempPrefix=/../filesInProgress/");