Apache Camel File2 включает только определенные подпапки из исходного каталога - PullRequest
0 голосов
/ 31 января 2019

Я использую Apache Camel File2 (SFTP) (с Camel Последняя версия) и Java8 API.Я пытаюсь разработать класс MyRouteBuilder.java, который расширяет класс RouteBuilder и реализует метод configure.

Я хочу передать файлы из исходного пути в целевой путь.Здесь, в конечной точке источника, указание параметра URI «include» для включения файлов из определенных определенных подпапок в исходный путь, например «SubFolder1, SubFolder2, SubFolder3».

Пример исходных URI: 1) «file: \ src»\ SubFolder1 \. * \. Txt "2)" file: \ src \ SubFolder2 \. * \. Txt "

Я пробовал использовать несколько приведенных ниже примеров и даже примеров:

 1) include=.SubFolder[1-2]\.*\.txt
 2) include=.SubFolder1|SubFolder2\.*\.txt
 3) include=SubFolder[1-2]\.*\.txt
 4) include=SubFolder1\.*\.txt
 5) include=.SubFolder(?)\.*\.txt

Ничего не работает.

Пожалуйста, предложите способ решения проблемы с использованием Apache Camel File2 API с использованием Java.

public void configure() throws Exception {

    String sftpUrl = "sftp://" + user + "@" + hostName + sourcePath + "?" + "noop=true"
            + "&recursive=true&include=.*\\.txt$"+"&strictHostKeyChecking=no" + "&useUserKnownHostsFile=true" + "&password=RAW("
            + password + ")&preferredAuthentications=publickey,keyboard-interactive,password";  

    System.out.println("\n\n sftpUrl + " + sftpUrl + "\n\n");

    from(sftpUrl)
        .log(" Copying File : ${file:name} ").process(exchange -> {
        System.out.println("1. Processing a File  --> = " + exchange);
    }).to("file://" + destPath)
            // ;
    .log("Uploading file ${file:parent} / ${file:name} complete.");
}

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы должны использовать antInclude, так как он поддерживает как каталоги, так и файлы.И, между прочим, веб-сайт Camel претерпевает полную переработку, и в настоящее время актуальную документацию по компонентам можно просматривать на github.

antInclude=F1/*.txt,F2/*.txt

Так что смотрите: https://github.com/apache/camel/blob/master/components/camel-ftp/src/main/docs/ftp-component.adoc

Также обратите внимание, что вы можете просматривать каждую версию документации (выберите ветку / тег).

0 голосов
/ 31 января 2019

Как указано ниже @ hk6279, FTP2 наследует поведение File2 и File2, доступные на FTP2, если не указано иное.Однако очень важная часть, которую OP, возможно, пропустил, была выделена @ hk6279.

Only files (not directories) are matched for valid filename, if options such as: include or exclude are used.

Возможно, именно это и вызывает проблемы.


Похоже, вы имеете в виду компонент FTP2, а не компонент file2.Пожалуйста, посмотрите на тестовые примеры компонента FTP , чтобы увидеть, как реализована фильтрация. Он не поддерживает опцию include, как вы можете видеть в документах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...