- PR -

プログラム中でのDOSコマンドの使用

1
投稿者投稿内容
Boy
会議室デビュー日: 2007/01/20
投稿数: 7
投稿日時: 2007-01-20 15:59
始めまして。
開発に行き詰まり立ち寄らせてもらいました。

さっそく質問なのですが、javaにおいて
「ループ内で外部計算プログラム使用のためにDOSコマンドを使用する」
事は可能ですか?

現在、共役勾配法によるNP問題に取り組んでいます。
その際、最適化する関数が大変煩雑なもので、外部プログラムに頼っています。
具体的に

----------------ループ開始---------------------------



C:\Project\Calculation\minimize.exe を実行        ←←この部分で
コマンドライン上で「test.xyz」を入力し、エンターキー    ←←困っています


計算結果から C:\Project\param.prm を更新


--------------ループ終了---------------------------

という流れです。
また、パラメータ更新の際に計算結果を必要としますが、
外部計算プログラムを利用しているため、結果ファイルがかなり大きいです。
計算結果は下から5,6行目にあるのですが、ここを数値をダイレクトに読み込むための
何かいいアイディアはありませんか?

今の所、

上から空読み込みをし、全体の行数をカウント
→上から空読み込みをし、該当箇所直前までの文字数をカウント
→ランダムアクセスでポインタを文字数分シフトし、読み込み開始
→(RandamAccessではTokenizerが使えない?)ため、読み込んだ数値のうち、利用するものを抽出(前半部分は半角英字のデータなので捨てる)

という形でやっていますが、何だかとても無駄な事をしている気がしてなりません。
javaで何か任意の行から読み込み開始、のようなものはないのでしょうか?
やはりファイルの行数が可変な場合は
空読み→行数カウント→文字数カウント→ポインタ移動
の手順が必要なのでしょうか?


質問長くなってしまいすいません。
よろしければ皆さんの知恵を貸してください。
お願いします。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 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
Boy
会議室デビュー日: 2007/01/20
投稿数: 7
投稿日時: 2007-01-23 20:42
返事遅くなってすいません。
アドバイスありがとうございました。もう少し調べてみて、試行錯誤してみます。
また調べてもわからない事出てきたら伺うかもしれません。
squeak
会議室デビュー日: 2005/05/31
投稿数: 6
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)