- 締切済み
Javaで名前付きパイプ
Windows上でJavaとFortranを使用し、プロセス間通信を行いと考えています。単純に思いついたのが名前付きパイプなのですが、Javaで名前付きパイプを生成する方法が解りません。 どなたかご存じないでしょうか? ちなみに、 try { // ファイルオブジェクトを生成する file.createNewFile(); FileOutputStream fileOutputStream = new FileOutputStream("\\\\.\\PIPE\\mypipe");<<ここでエラーになる。 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); // ファイルに書き込む内容をセットする String outputdata = "TESTDATA"; <<< 以下省略 >>>> こんな感じで、試してみたのですが、ファイルの生成ができませんでした。 色々と調べてはいるのですが、どなたか成功した方いらっしゃいませんか?最悪はJNIを利用するしかないのかなぁ?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- _ranco_
- ベストアンサー率58% (126/214)
回答No.1
もちろんJNIを使うしかないが、しかし、それほどのリアルタイム性が必要ないなら、ふつうのファイルでやれば?
お礼
回答ありがとうございます。 やはりJNIでしたか・・・ ネイティブなjavaだけで実現したかったのですが、無理そうですね。 名前付きパイプのメリットとして、 ・同期が取れる。 ・速度が速い。HDDへのアクセスが無い。 ・古い言語でもファイルIOで実現できる。相手がFortranなので・・・ というところが重要でして、敢えて事例が少ないながらも名前付きパイプに拘りました。
補足
結果です。 Java:名前付きパイプを生成することができません。 名前付きパイプはCreateNamedPipe()APIを使用することから、C/C++などを利用する必要があります。 ただし、JNIを利用してC/C++のAPIを引用するなどの手法はあるでしょう。 ただ、JNIを使うということで、Javaで使えるというには語弊があるかもしれませんね。 Javaから名前付きパイプの生成はできませんが、生成された名前付きパイプにアクセスする方法は通常のファイルにアクセスする場合と何ら変わりはありません。 以上