Я пытался написать программу для выполнения маршрутизации на основе содержимого с использованием apache camel. Я хотел опросить конкретную папку и разделить файлы по разным папкам в зависимости от их типа. Я написал следующий код: -
public void configure() throws Exception {
Scanner sc = new Scanner(System.in);
String path = sc.next();
from("file:"+path+"?noop=true")
.to("log:?level=INFO&showBody=true&showHeaders=true")
.choice()
.when(header("CamelFileNameConsumed").endsWith(".html"))
.to("file:HTML files")
.when(header("CamelFileNameConsumed").endsWith(".txt"))
.to("file:Text Files")
.when(header("CamelFileNameConsumed").endsWith(".cpp"))
.to("file:Cpp Files")
.when(header("CamelFileNameConsumed").endsWith(".xlsx"))
.to("file:Excel Files")
.when(header("CamelFileNameConsumed").endsWith(".png"))
.to("file:Images")
.when(header("CamelFileNameConsumed").endsWith(".jpg"))
.to("file:Images")
.otherwise()
.to("file:other")
.end()
.to("file:all");
}
Пока я писал, я понял, что файл изображения и видеофайл могут иметь много форматов. Я не хочу писать новую строку кода для каждого типа файла. Например: я хочу включить все типы файлов изображений, такие как jpeg, png и c, в одно условие .when (). Есть ли способ сделать это, потому что || (или) в этом случае не работает. Буду рад, если кто-нибудь также предложит какие-либо улучшения в этот код.