- - PR -
プログラム中でのDOSコマンドの使用
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-01-20 15:59
始めまして。
開発に行き詰まり立ち寄らせてもらいました。 さっそく質問なのですが、javaにおいて 「ループ内で外部計算プログラム使用のためにDOSコマンドを使用する」 事は可能ですか? 現在、共役勾配法によるNP問題に取り組んでいます。 その際、最適化する関数が大変煩雑なもので、外部プログラムに頼っています。 具体的に ----------------ループ開始--------------------------- ・ ・ ・ C:\Project\Calculation\minimize.exe を実行 ←←この部分で コマンドライン上で「test.xyz」を入力し、エンターキー ←←困っています ・ ・ 計算結果から C:\Project\param.prm を更新 ・ ・ --------------ループ終了--------------------------- という流れです。 また、パラメータ更新の際に計算結果を必要としますが、 外部計算プログラムを利用しているため、結果ファイルがかなり大きいです。 計算結果は下から5,6行目にあるのですが、ここを数値をダイレクトに読み込むための 何かいいアイディアはありませんか? 今の所、 上から空読み込みをし、全体の行数をカウント →上から空読み込みをし、該当箇所直前までの文字数をカウント →ランダムアクセスでポインタを文字数分シフトし、読み込み開始 →(RandamAccessではTokenizerが使えない?)ため、読み込んだ数値のうち、利用するものを抽出(前半部分は半角英字のデータなので捨てる) という形でやっていますが、何だかとても無駄な事をしている気がしてなりません。 javaで何か任意の行から読み込み開始、のようなものはないのでしょうか? やはりファイルの行数が可変な場合は 空読み→行数カウント→文字数カウント→ポインタ移動 の手順が必要なのでしょうか? 質問長くなってしまいすいません。 よろしければ皆さんの知恵を貸してください。 お願いします。 |
|
投稿日時: 2007-01-20 16:59
NAL-6295です。
googleで検索したらそれらしい結果がたくさん出てきましたよ。 [java dosコマンド] http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=java+dos%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89&num=50 |
|
投稿日時: 2007-01-23 20:42
返事遅くなってすいません。
アドバイスありがとうございました。もう少し調べてみて、試行錯誤してみます。 また調べてもわからない事出てきたら伺うかもしれません。 |
|
投稿日時: 2007-01-24 14:14
自信ないので、
思いついたことだけ。 --- >javaで何か任意の行から読み込み開始、のようなものはないのでしょうか >計算結果は下から5,6行目にあるのですが 「後ろから読み込」めばいいかも? http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35913&forum=12&4 「tail fseek」などで検索。 http://www.st.rim.or.jp/~phinloda/ruins/ruins148.html --- また、そもそも、外部プロセスによる計算結果をファイルに書き出さないで、 直接にその「外部プロセスからの出力を取得して」 そこからデータを直接に読み込む、 というやりかたもあるかも。 ようするに、外部プロセスさんに、 「ファイルに書き出してもらう」かわりに 「Javaアプリケーションのストリームのほうへ書き出してもらう」。 で、"リングバッファ"(※キュー)に、 さいごの5、6行を蓄えておく。とか? |
1