0

ストリームとその適切な使用法を理解するために、I/O に関する Java チュートリアルを読んでいます。接続されている 2 つのデバイスがあり、両方のデバイスに と があるInputStreamとします。OutputStream2 つの間でデータを転送するにはどうすればよいですか?

たとえば、一方のデバイスから一連の単語をもう一方のデバイスに送信して、それらを画面に出力したいとします。それはどのように機能しますか?

public class Device1 {
    // assuming connectedDevice is something
    String[] words = new String()[]{"foo", "bar", "baz"};
    OutputStream os = connectedDevice.getOutputStream();
    InputStream is = connectedDevice.getInputStream();
    /*
        How to write to output stream?
    */
}

public class Device2 {
    // assuming connectedDevice is something
    ArrayList<String> words = new ArrayList<String>();
    OutputStream os = connectedDevice.getOutputStream();
    InputStream is = connectedDevice.getInputStream();
    /*
        How can I somehow get the words using `read()` and `put()`
        them into the ArrayList for use?
    */
}

たぶん、私はこのすべてを間違っています。ご理解のほどよろしくお願いいたします。

4

2 に答える 2

2

デバイスの接続方法によって異なります。たとえば、TCP や共有ファイル システムを介して接続する場合があります。

ストリームに集中したい場合は、ファイル システムを使用するアプリケーションを作成します。次に、 と を使用FileOutputStreamFileInputStreamて、ストリーム API を理解します。

ネットワーキングに重点を置いている場合は、ネットワーキングのチュートリアルも学習することをお勧めします。

于 2012-07-09T16:44:00.857 に答える
1

文字を送信するだけの場合はOutputStreamWriter、書き込み側とInputStreamReader読み取り側で を使用してストリームをラップします。文字列全体を書き込んでから、一度に 1 文字ずつ読み取って出力できます。本当に注意する必要がある場合は、両方に固定の文字エンコーディングを選択する必要があります。

Strings のような単純なオブジェクト全体を送信する場合は、 DataOutputStream/を使用できますDataInputStream。(文字列の場合は、UTFメソッドを使用します。)

もっと複雑にしたい場合は、 と を使用してオブジェクトのシリアル化/逆シリアル化を行う必要がありObjectOutputStreamますObjectInputStream

于 2012-07-09T16:50:15.143 に答える