Должен ли я использовать Runtime.exec () для вызова сценария оболочки bash? - PullRequest
0 голосов
/ 13 июля 2011

У меня есть несколько файлов, которые нужно добавить и отсортировать с помощью утилиты сортировки Unix. Тогда мы будем использовать Java для обработки отсортированного файла.

Первоначально я хотел бы использовать сценарий оболочки bash для выполнения сортировки, а в более поздней части файла сценария я вызываю программу Java. Но меня беспокоит то, что сценарий оболочки не имеет зрелой библиотеки журналов, вы можете только перенаправить поток вывода и поток ошибок.

Если я хочу, чтобы журнал выглядел лучше, нужно ли мне использовать Runtime.exec () для вызова части скрипта оболочки bash в Java, чтобы я мог их регистрировать?

Ниже приведен файл сценария оболочки:

    cd /home/app/xyz/data

    echo -n "Total number of files: "
    ls | wc -l

    for file in ls ABC_*.DAT
    do
        echo "Appending" $file "..."
        cat $file >> /home/app/xyz/data/unsorted.DAT
        echo "Moving" $file "to back up folder..."
        mv $file /home/app/xyz/data/backup
    done

    sort -t ',' -k 1,1 -k 5,7 -k 2,2r unsorted.DAT -o sorted.DAT

    CALL JAVA_PROGRAM sorted.DAT

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

ИМХО, если вы хотите использовать Java, вы должны переписать эту логику скрипта на Java для улучшения переносимости.Это короткий сценарий, поэтому он не будет сложным.Вы можете посмотреть здесь: Оптимальный способ сортировки текстового файла в Java .

Но это зависит от сценария и варианта использования.Можно написать скрипт с хорошей регистрацией;)

0 голосов
/ 13 июля 2011

Сценарий оболочки просто объединяет все ABC_*.DAT файлы в текущем каталоге в один файл /home/app/xyz/data/unsorted.DAT, а затем сортирует содержимое в /home/app/xyz/data/unsorted.DAT в sorted.DAT.Наконец, скрипт вызовет Java-программу для обработки sorted.DAT.

. Вы можете выполнять чтение, объединение и сортировку файлов из Java.Если вам нужны вспомогательные классы для обработки файлов из каталогов и т. Д., Я бы порекомендовал Apache Fileutils .Поэтому, если бы я рекомендовал изучить возможность отказа от сценария оболочки, объединить всю обработку в одну Java-программу и избежать Runtime.exec() в этом (по-видимому) простом случае.

0 голосов
/ 13 июля 2011

Я не думаю, что «лучшее ведение журнала» является причиной для запуска сценариев оболочки из Java.Процесс Java должен только взять имя файла для обработки в качестве аргумента.Если это возможно, обработка может быть выполнена непосредственно на терминале.Таким образом, ваша Java-программа тоже переносима.Но нужно знать весь вариант использования, чтобы прийти к правильному решению.

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