2011-07-13 2 views
0

私はいくつかのファイルを追加し、unix sortユーティリティを使用してソートしました。次にソートされたファイルをJavaで処理します。Runtime.exec()を使用してbashシェルスクリプトを呼び出す必要がありますか?

最初は、ソートを行うためにbashシェルスクリプトを使いたいのですが、スクリプトファイルの後半でJavaプログラムを呼び出します。しかし、私の懸念は、シェルスクリプトは成熟したログライブラリを持たず、出力ストリームとエラーストリームだけをリダイレクトできることです。

ログを見栄え良くするために、Javaでbashシェルスクリプトの部分を呼び出すためにRuntime.exec()を使用してログに記録する必要がありますか?私は「より良いロギングは、」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 

答えて

0

次は、シェルスクリプトファイルです。 javaプロセスは、引数として処理するファイルの名前だけをとる必要があります。可能であれば、端末上で直接的にacutal処理を行うことができます。この方法では、あなたのJavaプログラムも移植可能です。しかし、適切な判断を下すためには、ユースケース全体を知る必要があります。

2

IMHO Javaを使用する場合は、このスクリプトロジックをJavaに書き換えて移植性を向上させる必要があります。短いスクリプトなので難しくありません。ここをクリックしてください:Optimal way to sort a txt file in Java

ただし、シナリオや用途によって異なります。

0

シェルスクリプトは、現在のディレクトリ内のすべてのファイル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()を(明らかに)単純なケースで避けてください。

関連する問題